バッチファイルの作成は今日始めた初心者です。
良いタイトルが思いつかず変な日本語にってしまいましたが、iniファイルに入力した内容を選択肢に出して、内容またはタイプ番号を送信すると、選択した内容を変数として登録するような仕組みを作りたいです。
下に載せたのiniファイルの設定で例えると、worldまた2と打つと、selectedという変数にworldという値を与えるなどです。
iniファイルの内容が「(変数)=(値)」となるように設定してあります。
ini
1; config.ini 2 3[Types] 4type0=hello 5type1= 6type2=world 7type3= 8type4= 9type5= 10type6= 11type7= 12type8= 13type9=
そして、バッチファイルを起動すると、
hello [0] type [2] 選択してください。 >
という風に表示したいです。
全然できなくて色々いじった結果以下のようになりました。
そしたら、welcomeとか1とか適当に書いても次のコマンドに行くようになってしまいました。(gotoコマンドで戻るはずなのに)
最終的にif definedを消したり数値だけで選択するように文を消していったのですが、それでも治らないので萎えました。
bat
1rem main.bat 2 3@echo off 4setlocal enabledelayedexpansion 5for /f "tokens=1,* delims==" %%a in (config.ini) do ( 6 set %%a=%%b 7) 8 9:selectType 10powershell sleep 1 11echo; 12if defined version0 echo - %type0% [0] 13if defined version1 echo - %type1% [1] 14if defined version2 echo - %type2% [2] 15if defined version3 echo - %type3% [3] 16if defined version4 echo - %type4% [4] 17if defined version5 echo - %type5% [5] 18if defined version6 echo - %type6% [6] 19if defined version7 echo - %type7% [7] 20if defined version8 echo - %type8% [8] 21if defined version9 echo - %type9% [9] 22echo; 23 24set /p selectType="> " 25if "%selectType%" == "0" ( 26 set selectType=%type0% 27) else if "%selectType%" == "1" ( 28 set selectType=%type1% 29) else if "%selectType%" == "2" ( 30 set selectType=%type2% 31) else if "%selectType%" == "3" ( 32 set selectType=%type3% 33) else if "%selectType%" == "4" ( 34 set selectType=%type4% 35) else if "%selectType%" == "5" ( 36 set selectType=%type5% 37) else if "%selectType%" == "6" ( 38 set selectType=%type6% 39) else if "%selectType%" == "7" ( 40 set selectType=%type6% 41) else if "%selectType%" == "8" ( 42 set selectType=%type6% 43) else if "%selectType%" == "9" ( 44 set selectType=%type9% 45) else if "%selectType%" == "quit" ( 46 goto quit 47) else if "%selectType%" == "q" ( 48 goto quit 49) else ( 50 echo タイプが不正です。 51 goto selectType 52) 53 54echo; %selectTypeName%が選択されました。 55endlocal 56timeout 5 57exit 58 59:quit 60echo; 選択されませんでした。 61endlocal 62timeout 5 63exit 64
改善策を御教授ください。
複雑でも良いのですが、不適切なコードは直したので、気持ち悪い部分や、書き方が適切でない場所がありましたら、そちらもご報告ください。
また、iniファイルの中にある物を変数に変える
bat
1for /f "tokens=1,* delims==" %%a in (config.ini) do ( 2 set %%a=%%b 3)
というコマンドですが、よくわからないので、意味を教えてください。
また、もっと良い文がありましたら、教えてください。
よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー