Windows バッチ ファイルでコンマ区切りのテキスト ファイルを読み取るにはどうすればよいですか?

Windows バッチ ファイルでコンマ区切りのテキスト ファイルを読み取るにはどうすればよいですか?

テキスト ファイルをコンマ区切りのテキスト ファイルになるまで読み取ることができます。

各行の 2 つの変数を読み取り、それぞれを別の条件の If ステートメントでテストしたいと思います。問題は、変数を正しく読み取れないことです。いろいろ試しましたが、投稿するのは次のとおりです。タイムアウトは、何が起こっているかを確認するためのものです。

for /f "tokens=*" %%a in (TestText.txt) do (
timeout /t 1
echo %%a is the present variabe
timeout /t 2
if %%a=="One","1" echo Match for "One","1"
timeout /t 3
if %%a=="One""1" echo Match for "One","1"
timeout /t 4
if %%a=="One" echo Match for "One"
timeout /t 5
if %%a=="1" echo Match for "1"
timeout /t 6
)

テストテキスト.txt

"One","1"
"Two","2"
"Three","3"
"Four","4"

出力:

"One","1" is the present variabe

答え1

条件の問題は、カンマ ( ,) をエスケープする必要があることです。コマンド プロンプトでは、これはキャレット ( ^) を使用して行われます。

これは機能します:

for /f %%a in (TestText.txt) do (
    if %%a=="One"^,"1" echo Match for "One","1"
)

ただし、CSV を使用しているため、各行をコンマで分割する必要がある場合があります。これはtokens=1-n delims=,n行あたりの値の数を指定するオプションを使用して行います。

個別の値は%%a、、%%bなどに保存されます。

for /f "tokens=1-2 delims=," %%a in (TestText.txt) do (
    if %%a=="One" echo Match for "One"
    if %%b=="1"   echo Match for "1"
)

さらに詳しい情報

関連情報