【Batchファイル】モード切替バッチ、if文の結果がTrueのはずがFalseに。どこが間違っているかわからない。
Windows10上で、バッチファイルで簡単なAutomationコマンドを作っています。モード切り替えバッチです。
mode.txt に、manualと書いてあったら、change to automode?(y/n) と尋ねる。"y"と入力すると、mode.txtの中身をAutoに書き換え、「changed to Auto mode」と表示する。"n"と回答すると、mode is not changed. still "Manual" と表示する。(mode.txtの中身が"auto"のときは、その逆)
ような内容なのですが、今回テスト環境でためすと、change to Auto mode?(y/n) で"y"と入力したのに、mode.txtが書き換えられず、"mode is not changed.." と表示されてしまいます。
if 文の何かが間違っていると思うのですが、どうしても間違いを見つけ出すことができません。
以下のコマンドなのですが、どうしたら "y"を選択したときに上記のような仕様通り動いてくれるか、どなたかアドバイスいただけませんでしょうか?
@echo off
set "filePath=C:\test\mode.txt"
set /p mode=<%filePath%
echo current mode: %mode%
if /i "%mode%"=="manual" (
echo change to Auto mode? (y/n^)
set /p choice=
if /i "%choice%"=="y" (
echo Auto > %filePath%
echo Changed to Auto mode.
echo to finish this command, please type any key.
pause > nul
exit /b
) else (
echo mode is not changed, still "Manual".
echo to finish this command, please type any key.
pause > nul
exit /b
)
) else if /i "%mode%"=="Auto" (
echo Change to Manual mode? (y/n^)
set /p choice=
if /i "%choice%"=="y" (
echo Manual > %filePath%
echo changed to Manual mode.
echo to finish this command, please type any key.
pause > nul
exit /b
) else (
echo mode is not changed, still "Auto".
echo to finish this command, please type any key.
pause > nul
exit /b
)
) else (
echo Error: check the mode.txt
echo to finish this command, please type any key.
pause > nul
exit /b
)
echo current modeは正しく表示されていますし、manual/Auto以外の文字列をmode.txtに入力しておくときちんとerrorになるため、"y"と入力したときの動作だけがうまくいっていない状態です。
以上、どなたかわかる方がいましたら、よろしくお願いいたします。