Пакетный файл команда PAUSE не работает - PullRequest
49 голосов
/ 12 января 2011

Я создаю простой командный файл, чтобы помочь в нескольких вещах, и у меня есть некоторые инструкции, которые он также распечатывает, и которые я хочу, чтобы пользователь увидел перед выходом. В настоящее время окно закрывается очень быстро. Поэтому я добавил PAUSE в конце файла, но он не хочет работать.

Я посмотрел другие вопросы по SO и проверил, чтобы окончание строк было CRLF, и чтобы у меня было CRLF в конце файла.

Есть предложения?

Ответы [ 6 ]

120 голосов
/ 07 марта 2012

Если последняя команда не выполнена, пауза не сработает.

Вы можете исправить это, поместив «call» позади команды, которую вы выполняете (какая бы команда не была перед паузой), тогда пауза сработает.

Так, например, у меня был пакетный файл phpunit, который выглядел следующим образом:

phpunit tests/sometests.php
pause

Когда phpunit не удался, он просто выходил без паузы.Если изменить его на это, то он сделал правильную паузу:

call phpunit tests/sometests.php
pause
3 голосов
/ 12 января 2011

Последняя команда перед паузой успешно выполняется?Не могли бы вы поделиться своим сценарием - хотя бы последние несколько команд?

В качестве альтернативы, поскольку вы, похоже, используете Windows7, попробуйте команду Timeout и посмотрите, работает ли она.

2 голосов
/ 30 января 2015

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

Попробовал предложенные решения выше; никто не работал.

Так что для дальнейшего использования вот что я сделал:

Обычно просто "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
1 голос
/ 26 апреля 2012

Я думаю, я знаю, где проблема, у меня была такая же проблема.Поэтому, если вы делаете это так, вы создаете новый файл, помещаете в него всю информацию о пакете и сохраняете его как обычный текст, а после этого просто переименовываете расширение, оно не будет работать :).Вы должны сохранить его в текстовом редакторе, и оттуда вы должны выбрать «Пакетный файл ( .bat; .cmd; *. Nt)», например Notepad ++, вероятно, из-за кодировки, так чтокак это, и я думаю, это будет хорошо.GL!:)

0 голосов
/ 24 мая 2018

У меня такая же проблема.Это происходит по двум причинам:
Первая - когда запускает пакетный файл от имени администратора .

Я переместил свой пакетный файл на рабочий стол и попробовал его от имени администратора, и он работаетхорошо.
Я попытался переместить пакетный файл в любой корень диска (например, C: \ D: \ и т. д.), и он работает правильно.
Я попытался переместить пакетный файл в любой каталог с пробелами, и он работаетправильно.

Вторая и основная причина: В каталоге пакетного файла было несколько специальных символов (например, @ или & или что-то подобное) .

Просто найдите этот специальный символ и удалите его из имени папки.И это будет работать правильно.

0 голосов
/ 27 января 2016

Просто дополнение к ответу Тима, если вы хотите, чтобы окно всегда отображалось, вы можете написать .bat файл как:

call phpunit tests/sometests.php
cmd /k
...