
我有一個奇怪的問題,我有一個簡單的批次文件,它運行另一個批次文件,將螢幕上的內容輸出到日誌文件,然後嘗試打開該日誌文件。問題是,日誌檔案無法開啟。這是代碼。
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 批次文件,但我可以大膽猜測一下。