- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バッチで配列に入れた値が正しく表示されない)
バッチで配列に格納した値が正しく表示されない
このQ&Aのポイント
- バッチファイルでファイルから読み込んだ内容を配列に格納し、表示させる際、値が正しく表示されない問題が発生しています。
- 問題の原因として、setlocal enabledelayedexpansionとforループ内で値を格納する処理がうまく動作していない可能性があります。
- 解決するためには、forループ内での値の格納方法を見直すか、setlocal enabledelayedexpansionを使わずに別の方法を試すことが必要です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>「echo !cnt!:!x[!cnt!]!」での表示が正しくない 書いたとおりに実行されてますね。 cnt という環境変数の中身 : という固定文字列 x[ という環境変数の中身(=空) cnt という固定文字列 ] という環境変数の中身(=空) を順に表示します。 cntの値によって、環境変数 x[1] や x[2] の中身を表示したいと言うことなら、 (前略) for %%b in (!rdtxt!) do ( echo -item2: %%b set x[!cnt!]=%%b call :sub set /a cnt=!cnt!+1 ) ) endlocal goto :EOF :sub echo !cnt!:!x[%cnt%]! goto :EOF for ~ do の後を丸ごとsubに持って行った方が良いと思いますが。
お礼
すみません。 callで呼び出す場合は引数が指定できたんですね。 引数指定でわたしたら表示できました。
補足
ありがとうございます。 echo !cnt!:!x[%cnt%]! をルーチンにしたら表示されました。 >for ~ do の後を丸ごとsubに持って行った方が良いと思いますが。 上手くいきませんでした。 (省略) for %%b in (!rdtxt!) do ( call :sub ) ) endlocal goto :EOF :sub echo -item2: %%b set x[%cnt%]=%%b echo !cnt!:!x[%cnt%]! set /a cnt=%cnt%+1 goto :EOF としたら 「%b」となってしまいます。