У меня странная проблема, когда у меня есть простой пакетный файл, который запускает другой пакетный файл, выводит то, что на экране, в файл журнала, а затем пытается открыть файл журнала. Проблема в том, что файл журнала не открывается. Вот код

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 ответ1

1

cmd связывается с пакетным файлом, то есть вызываемый пакетный файл заменяет вызывающий пакетный файл и не возвращается, поэтому любые вызовы после пакетного вызова никогда не будут видны. Если вы хотите вернуться из командного файла, вы должны использовать команду call , как в:

echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
call Hello.bat
start "" notepad.exe deploy.bat.log

Не то, что вы могли бы ожидать, но, боюсь, раннее плохое дизайнерское решение в DOS все еще с нами Я не уверен, сколько пакетных файлов DOS1 используется в современных версиях Windows, но я могу рискнуть предположить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .