実現したいこと
下記を実現したいです。
①バッチファイルでファイルを読み込む。
②読み込んだファイルを配列形式の変数に格納する。
③格納した変数を表示、またファイルに書き出したい。
発生している問題・分からないこと
現状のソースコードだと「echo_test_01.log」のように出力される。
「echo_test_01.log」は「echo_test_02.log」と同様にしたいが、記述方法がわからない。
該当のソースコード
setlocal EnableDelayedExpansion rem 配列の数指定用変数 set a_count_01=0 for /f "tokens=1-3 delims=," %%a in (ip_list.ini) do ( rem 配列カウントアップ set /a a_count_01+=1 rem 読込んだ文字列の変数格納 set array_01[!a_count_01!]=%%a set array_02[!a_count_01!]=%%b set array_03[!a_count_01!]=%%c rem for内出力テスト echo array_01[!a_count_01!]=%!%array_01[!a_count_01!]%!% echo array_02[!a_count_01!]=%!%array_02[!a_count_01!]%!% echo array_03[!a_count_01!]=%!%array_03[!a_count_01!]%!% rem for内ログ出力テスト echo array_01[!a_count_01!]=%!%array_01[!a_count_01!]%!%>>echo_test_01.log echo array_02[!a_count_01!]=%!%array_02[!a_count_01!]%!%>>echo_test_01.log echo array_03[!a_count_01!]=%!%array_03[!a_count_01!]%!%>>echo_test_01.log ) rem 開発検証用_ログ出力 echo array_01[1]=%array_01[1]%>>echo_test_02.log echo array_02[1]=%array_02[1]%>>echo_test_02.log echo array_03[1]=%array_03[1]%>>echo_test_02.log echo array_01[2]=%array_01[2]%>>echo_test_02.log echo array_02[2]=%array_02[2]%>>echo_test_02.log echo array_03[2]=%array_03[2]%>>echo_test_02.log echo array_01[3]=%array_01[3]%>>echo_test_02.log echo array_02[3]=%array_02[3]%>>echo_test_02.log echo array_03[3]=%array_03[3]%>>echo_test_02.log echo array_01[4]=%array_01[3]%>>echo_test_02.log echo array_02[4]=%array_02[3]%>>echo_test_02.log echo array_03[4]=%array_03[3]%>>echo_test_02.log
ip_list.ini
1192.168.1.1,host①,装置① 2192.168.1.2,host②,装置② 3192.168.1.3,host③,装置③ 4192.168.1.4,host④,装置④
echo_test_01.log
1array_01[1]=array_01[1] 2array_02[1]=array_02[1] 3array_03[1]=array_03[1] 4array_01[2]=array_01[2] 5array_02[2]=array_02[2] 6array_03[2]=array_03[2] 7array_01[3]=array_01[3] 8array_02[3]=array_02[3] 9array_03[3]=array_03[3] 10array_01[4]=array_01[4] 11array_02[4]=array_02[4] 12array_03[4]=array_03[4]
echo_test_02.log
1array_01[1]=192.168.1.1 2array_02[1]=host① 3array_03[1]=装置① 4array_01[2]=192.168.1.2 5array_02[2]=host② 6array_03[2]=装置② 7array_01[3]=192.168.1.3 8array_02[3]=host③ 9array_03[3]=装置③ 10array_01[4]=192.168.1.4 11array_02[4]=host④ 12array_03[4]=装置④
set /a a_count_01+=1 rem 読込んだ文字列の変数格納 set array_01[!a_count_01!]=192.168.1.1 set array_02[!a_count_01!]=host① set array_03[!a_count_01!]=装置① rem for内出力テスト echo array_01[!a_count_01!]=array_01[!a_count_01!] echo array_02[!a_count_01!]=array_02[!a_count_01!] echo array_03[!a_count_01!]=array_03[!a_count_01!] rem for内ログ出力テスト echo array_01[!a_count_01!]=array_01[!a_count_01!] 1>>echo_test_01.log echo array_02[!a_count_01!]=array_02[!a_count_01!] 1>>echo_test_01.log echo array_03[!a_count_01!]=array_03[!a_count_01!] 1>>echo_test_01.log : : : echo array_01[1]=192.168.1.1 1>>echo_test_02.log echo array_01[2]=host①>>echo_test_02.log echo array_01[3]=装置①>>echo_test_02.log : : :
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
for文内処理を行うために遅延環境変数は設定した。
下記サイトを確認して「%!%」としてみたが想定通りにはならなかった。
https://kbn48.com/technical/707
補足
特になし
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/02/14 12:33