
別のバッチ ファイルを実行し、画面に表示されている内容をログ ファイルに出力し、ログ ファイルを開こうとする単純なバッチ ファイルがあるのですが、奇妙な問題が発生しています。問題は、ログ ファイルが開かないことです。コードは次のとおりです。
echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
Archive.deploy.cmd /Y /M:Test1 /U:<User> /P:<Password> >> deploy.bat.log
start "" notepad.exe deploy.bat.log
試行錯誤の結果、外部バッチ ファイルへの呼び出しをコメント化すると、期待どおりにログ ファイルが開くことがわかりました。
echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
REM Archive.deploy.cmd /Y /M:Test1 /U:<User> /P:<Password> >> deploy.bat.log
start "" notepad.exe deploy.bat.log
確認のため、他のバッチ ファイルを単純に を実行するバッチ ファイルに置き換えましたecho Hello World
が、問題は解決せず、ログ ファイルが開きません。他のバッチ ファイルで何か問題が発生して失敗しているのではないかと思いましたが、そうではないようです。この例はまだ機能していません。
echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
Hello.bat
start "" notepad.exe deploy.bat.log
私の質問は、なぜログ ファイルが開かないのか、また、開くようにするにはどう修正すればよいのかということです。
答え1
コマンドバッチファイルへのチェーン、つまり呼び出されたバッチファイルは呼び出したバッチファイルを置き換えて戻らないので、バッチ呼び出し後の呼び出しは表示されません。バッチファイルから戻りたい場合は、電話コマンドは次のようになります:
echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
call Hello.bat
start "" notepad.exe deploy.bat.log
予想外かもしれませんが、残念ながら、DOS の初期の誤った設計決定は今でも残っています。最近の Windows バージョンで使用されている DOS1 バッチ ファイルがいくつあるかはわかりませんが、推測することはできます。