Я создаю простой командный файл, чтобы помочь в нескольких вещах, и у меня есть некоторые инструкции, которые он распечатывает, а также, что я хочу, чтобы пользователь видел перед выходом. В настоящее время окно закрывается очень быстро. Поэтому я добавил PAUSE
в конце файла, но он не хочет работать.
Я просмотрел другие вопросы по SO и проверил, чтобы концы строк были CRLF
и у меня есть CRLF
в конце файла.
Любые предложения?
Ответ 1
Выполняется ли последняя команда до паузы? Разделите свой script - по крайней мере последние несколько команд?
В качестве альтернативы, поскольку вы, похоже, используете Windows7, попробуйте команду Timeout и посмотрите, работает ли она.
Ответ 2
Если последняя команда не работает, пауза не будет работать.
Вы можете исправить это, поставив "вызов" за команду, которую вы выполняете (любая команда перед паузой), тогда пауза будет работать.
Так, например, у меня был пакетный файл phpunit, который выглядел так:
phpunit tests/sometests.php
pause
Когда phpunit не удалось, он просто вышел без паузы. Изменение его на это заставило его сделать паузу правильно:
call phpunit tests/sometests.php
pause
Ответ 3
Я думаю, я знаю, где проблема, у меня была та же проблема. Поэтому, если вы делаете это так, вы создаете новый файл и помещаете в него всю информацию о пакете и сохраняете его как обычный текст, и после этого просто переименуйте расширение, которое не будет работать:). Вы должны сохранить его через текстовый редактор, и оттуда вы должны выбрать "Пакетный файл (.bat;.cmd; *. Nt)", например, Notepad ++, вероятно, из-за кодирования, так что сделайте это так, и я thnk его будет в порядке. GL!:)
Ответ 4
У меня были проблемы даже с эхом...
предполагая, что это было вызвано длинным пакетным файлом... Пауза выполнялась, но она не приостанавливалась, это было почти так, как будто нажатие клавиши после выполнения Pause.
Пробовал предлагаемые решения выше; никто не работал.
Итак, просто для справки в будущем, вот что я сделал:
В принципе просто "пауза" > nul & pause > nul "; работает каждый раз.
@echo off
CALL :ForcePause "Press any key to resume."
ECHO.
ECHO Hello World!
ECHO.
CALL :ForcePause "Press any key to exit."
EXIT
REM You can remove echo if you don't want to pass custom string for pause
:ForcePause
echo %~1
pause > nul && pause > nul
GOTO :EOF
Ответ 5
Просто добавив ответ Тима, если вы хотите, чтобы окно всегда отображалось, вы можете записать файл .bat, например:
call phpunit tests/sometests.php
cmd /k