Пакетная команда PAUSE не работает

Я создаю простой командный файл, чтобы помочь в нескольких вещах, и у меня есть некоторые инструкции, которые он распечатывает, а также, что я хочу, чтобы пользователь видел перед выходом. В настоящее время окно закрывается очень быстро. Поэтому я добавил 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