コマンド別/for
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#navi(コマンド別)
#contents
/////////////////////////////////////////////////////////...
*forの制御変数に使える文字 [#j491530c]
for /? を見ると、A-Z a-z の合計52個のようだが、実際には %...
記号が使えるようである。ただし、特殊文字については ^ によ...
for %%^" in (1 2 3) do echo %%^"
また、tokens= 指定による追加の変数もASCIIコード順に割り当...
for /f "tokens=1-3" %%Z in ("A B C") do echo %%Z %%[ %%\
/////////////////////////////////////////////////////////...
*カッコ内のでの改行や区切り [#bfd14dbd]
in 部のカッコ内においても、区切りのところで ^ を書かずと...
for %%I in (A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
) do echo %%I
改行は空白と同じに見なされる様だ。
for /f "delims=" %%A in ('echo
aaaa
bbbb
cccc
') do echo %%A → aaaa bbbb cccc を表示
また、要素の区切りには空白のほか、= ; , も使用できる。
for %%I in (A=B;C,D) do echo %%I → A B C D...
従って、in 部の (' ') や (` `) 内でこれらの文字を使う必要...
によるクォートが必要。~
( ) 内では、^ をつけても駄目である。~
(" ") では " " が = 等もクォートするので文字単位でのクォ...
言い換えると = ; , は区切り記号にならない。
for /f "delims=" %%A in ('echo =') do echo %%A → ECHO は...
for /f %%A in ('echo ^=') do echo %%A → = を表示
for %%A in (A ^= ^; ^,) do echo %%A → A のみ...
for /f %%A in ("A=;,B") do echo %%A → A=;,B ...
区切り記号ではないが、( ) (' ') (` `) 内で ) を使うときも...
/////////////////////////////////////////////////////////...
*for /f でスキップされる行 [#w93f3706]
for /f でテキストファイルから読んだり、コマンド実行結果を...
空行はスキップされる((ただし、skip= パラメータは空行も含...
ただし正確には空行をスキップするのでなく、for制御変数が空...
例えば "tokens=2" と指定した場合、空行でなくても2番目のト...
つまり、空白で区切られた語が1つしか無い行もスキップされる。
下記のように文字列指定の場合も同様。
set N=0
for /f "tokens=3" %%A in ("a b") do set /a N+=1
echo %N% → 0 が表示される
for /f "tokens=2" %%A in ("a b") do set /a N+=1
echo %N% → 1 が表示される
tokens= で複数のトークンを指定した場合、追加の変数は該当...
空になる。最初のトークンが空で無い限り、行は処理される。
/////////////////////////////////////////////////////////...
*オプションは " " で囲まなくても良い [#yb6719d7]
for /? を見ると、オプション指定時は " " で囲むように書い...
囲まなくても良い。
for /f usebackq %%A in (`time/t`) do echo %%A
ただし、= , ; は、for 文の構文解析において空白と見なされ...
使うときは、個別に ^ でクォートするか、全体を " " で囲ん...
下記はどちらも同じ動作をする。
for /f tokens^=1^,2^ delims^=: %%A in ('time/t') do set ...
for /f "tokens=1,2 delims=:" %%A in ('time/t') do set H=...
/////////////////////////////////////////////////////////...
*"delims=" と "tokens=*" [#ia082c53]
読み取った文字列を分割しない場合、for /f "delims=" と for...
2通りの方法がある。前者は区切り文字無しを指定、後者は区切...
全てのトークンを得るという違いがある。具体的には、前者で...
得られ、後者では先頭の空白文字が削除されて得られるという...
普通は、"delims=" の方が良いだろう。
/////////////////////////////////////////////////////////...
*delims= に空白を含める [#taf61ef4]
デリミタのデフォルト値は空白とタブである。デリミタをカン...
"delims=, "と指定するが、tokens= 等の他のパラメータがある...
最後のパラメータとして指定し、パラメータを閉じる " の前に...
デリミタに空白を含めることが出来る。最後に置かないと空白...
区切りとみなされてしまい、デリミタの一部とはならない。~
カンマと空白とタブを指定したい時は、タブコードを空白より...
/////////////////////////////////////////////////////////...
*usebackq の使い時 [#a32d1cfa]
for /f 構文の in ( ) 部の書式は、usebackq オプションの有...
パターンがある。どういうケースの時に usebackq を指定すべ...
:ファイルセットの場合|
空白を含んだファイル名のときは、" " で囲む必要があるので...
パラメータなどで空白を含む可能性がある場合は、usebackq の...
:文字列指定の場合|
特殊文字を個別にクォートする必要がなくなるため、" " で囲...
従って、文字列指定の場合は usebackq は指定しないで " " で...
:コマンド指定の場合|
' ' で囲むのも ` ` で囲むのも特に違いは無いのでどちらでも...
コマンド中で ' ' を多用するなどの事情が無い限り usebackq ...
/////////////////////////////////////////////////////////...
*eol= のデフォルト値と空にする方法 [#k3edb70b]
for /? を見る限り何も言及が無いので、eolパラメータのデフ...
思えるが、実際は ; (セミコロン)である。しかも簡単に空にす...
for /f "eol= delims=" → 空白がeol文字となって空白で始ま...
for /f "delims= eol=" → " がeol文字となって " で始まる行...
delims が空でないときはそれと同じ文字を eol 文字に指定す...
無効に出来る。delims と eol の両方を空にするには、
for /f delims^=^ eol^=
と、" " でパラメータを囲まずに特殊文字の = と空白を個別に...
/////////////////////////////////////////////////////////...
/////////////////////////////////////////////////////////...
#navi(コマンド別)
終了行:
#navi(コマンド別)
#contents
/////////////////////////////////////////////////////////...
*forの制御変数に使える文字 [#j491530c]
for /? を見ると、A-Z a-z の合計52個のようだが、実際には %...
記号が使えるようである。ただし、特殊文字については ^ によ...
for %%^" in (1 2 3) do echo %%^"
また、tokens= 指定による追加の変数もASCIIコード順に割り当...
for /f "tokens=1-3" %%Z in ("A B C") do echo %%Z %%[ %%\
/////////////////////////////////////////////////////////...
*カッコ内のでの改行や区切り [#bfd14dbd]
in 部のカッコ内においても、区切りのところで ^ を書かずと...
for %%I in (A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
) do echo %%I
改行は空白と同じに見なされる様だ。
for /f "delims=" %%A in ('echo
aaaa
bbbb
cccc
') do echo %%A → aaaa bbbb cccc を表示
また、要素の区切りには空白のほか、= ; , も使用できる。
for %%I in (A=B;C,D) do echo %%I → A B C D...
従って、in 部の (' ') や (` `) 内でこれらの文字を使う必要...
によるクォートが必要。~
( ) 内では、^ をつけても駄目である。~
(" ") では " " が = 等もクォートするので文字単位でのクォ...
言い換えると = ; , は区切り記号にならない。
for /f "delims=" %%A in ('echo =') do echo %%A → ECHO は...
for /f %%A in ('echo ^=') do echo %%A → = を表示
for %%A in (A ^= ^; ^,) do echo %%A → A のみ...
for /f %%A in ("A=;,B") do echo %%A → A=;,B ...
区切り記号ではないが、( ) (' ') (` `) 内で ) を使うときも...
/////////////////////////////////////////////////////////...
*for /f でスキップされる行 [#w93f3706]
for /f でテキストファイルから読んだり、コマンド実行結果を...
空行はスキップされる((ただし、skip= パラメータは空行も含...
ただし正確には空行をスキップするのでなく、for制御変数が空...
例えば "tokens=2" と指定した場合、空行でなくても2番目のト...
つまり、空白で区切られた語が1つしか無い行もスキップされる。
下記のように文字列指定の場合も同様。
set N=0
for /f "tokens=3" %%A in ("a b") do set /a N+=1
echo %N% → 0 が表示される
for /f "tokens=2" %%A in ("a b") do set /a N+=1
echo %N% → 1 が表示される
tokens= で複数のトークンを指定した場合、追加の変数は該当...
空になる。最初のトークンが空で無い限り、行は処理される。
/////////////////////////////////////////////////////////...
*オプションは " " で囲まなくても良い [#yb6719d7]
for /? を見ると、オプション指定時は " " で囲むように書い...
囲まなくても良い。
for /f usebackq %%A in (`time/t`) do echo %%A
ただし、= , ; は、for 文の構文解析において空白と見なされ...
使うときは、個別に ^ でクォートするか、全体を " " で囲ん...
下記はどちらも同じ動作をする。
for /f tokens^=1^,2^ delims^=: %%A in ('time/t') do set ...
for /f "tokens=1,2 delims=:" %%A in ('time/t') do set H=...
/////////////////////////////////////////////////////////...
*"delims=" と "tokens=*" [#ia082c53]
読み取った文字列を分割しない場合、for /f "delims=" と for...
2通りの方法がある。前者は区切り文字無しを指定、後者は区切...
全てのトークンを得るという違いがある。具体的には、前者で...
得られ、後者では先頭の空白文字が削除されて得られるという...
普通は、"delims=" の方が良いだろう。
/////////////////////////////////////////////////////////...
*delims= に空白を含める [#taf61ef4]
デリミタのデフォルト値は空白とタブである。デリミタをカン...
"delims=, "と指定するが、tokens= 等の他のパラメータがある...
最後のパラメータとして指定し、パラメータを閉じる " の前に...
デリミタに空白を含めることが出来る。最後に置かないと空白...
区切りとみなされてしまい、デリミタの一部とはならない。~
カンマと空白とタブを指定したい時は、タブコードを空白より...
/////////////////////////////////////////////////////////...
*usebackq の使い時 [#a32d1cfa]
for /f 構文の in ( ) 部の書式は、usebackq オプションの有...
パターンがある。どういうケースの時に usebackq を指定すべ...
:ファイルセットの場合|
空白を含んだファイル名のときは、" " で囲む必要があるので...
パラメータなどで空白を含む可能性がある場合は、usebackq の...
:文字列指定の場合|
特殊文字を個別にクォートする必要がなくなるため、" " で囲...
従って、文字列指定の場合は usebackq は指定しないで " " で...
:コマンド指定の場合|
' ' で囲むのも ` ` で囲むのも特に違いは無いのでどちらでも...
コマンド中で ' ' を多用するなどの事情が無い限り usebackq ...
/////////////////////////////////////////////////////////...
*eol= のデフォルト値と空にする方法 [#k3edb70b]
for /? を見る限り何も言及が無いので、eolパラメータのデフ...
思えるが、実際は ; (セミコロン)である。しかも簡単に空にす...
for /f "eol= delims=" → 空白がeol文字となって空白で始ま...
for /f "delims= eol=" → " がeol文字となって " で始まる行...
delims が空でないときはそれと同じ文字を eol 文字に指定す...
無効に出来る。delims と eol の両方を空にするには、
for /f delims^=^ eol^=
と、" " でパラメータを囲まずに特殊文字の = と空白を個別に...
/////////////////////////////////////////////////////////...
/////////////////////////////////////////////////////////...
#navi(コマンド別)
ページ名: