批处理文件命令PAUSE不起作用

时间:2011-01-12 06:46:33

标签: windows-7 batch-file

我正在创建一个简单的批处理文件以帮助处理一些事情,我还有一些指令可以打印出来,我希望用户在退出之前看到它。目前,窗口关闭非常快。所以我在文件的末尾添加了PAUSE,但它不想工作。

我在SO上查看了其他问题,并检查过以确保行结尾为CRLF并且文件末尾有CRLF

有什么建议吗?

7 个答案:

答案 0 :(得分:118)

如果最后一个命令失败,暂停将无效。

您可以通过在正在运行的命令后面放置“call”来解决它(无论命令在暂停之前),然后暂停将起作用。

例如,我有一个看起来像这样的phpunit批处理文件:

phpunit tests/sometests.php
pause

当phpunit失败时,它只是退出而没有暂停。将其更改为此可使其正确暂停:

call phpunit tests/sometests.php
pause

答案 1 :(得分:3)

暂停前的最后一个命令是否成功执行?介意分享你的脚本 - 至少是最后几个命令?

或者,由于您似乎使用的是Windows7,请尝试使用Timeout命令查看是否正常。

答案 2 :(得分:2)

我甚至在回声中遇到问题...... 假设它是由长批处理文件引起的...暂停正在执行,但它没有暂停,这几乎就像是在执行Pause后按下了一个键。

尝试了以上建议的解决方案;没人工作。

所以只是为了将来的参考,这就是我所做的:

基本上只是"暂停> nul&&暂停> NUL&#34 ;;每次都有效。

@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

答案 3 :(得分:1)

我想我知道问题出在哪里,我遇到了同样的问题。因此,如果你这样做,你创建一个新文件,并将所有批处理信息放在其中,并像普通文本一样保存,然后重命名扩展它将无法工作:)。您必须通过文本编辑器保存它,然后您必须选择“批处理文件( .bat; .cmd; * .nt)”,例如Notepad ++,它可能是因为编码所以这样做它就像这样,我觉得它会好的。 GL! :)

答案 4 :(得分:0)

除了Tim的回答之外,如果你想让窗口始终显示,你可以编写.bat文件,如:

call phpunit tests/sometests.php
cmd /k

答案 5 :(得分:0)

我有同样的问题。这是因为两个原因:
第一个是以管理员身份运行批处理文件

我已将我的批处理文件移至桌面并以管理员身份尝试,但工作正常 我已经尝试将批处理文件移动到任何磁盘根目录(如C:\ D:\ etc.),它可以正常工作 我已经尝试将批处理文件移动到任何带空格的目录,并且它可以正常工作。

第二个主要原因是:批处理文件目录中有一些特殊字符(如@或&或类似的东西)

只需找到此特殊字符,然后将其从文件夹名称中删除即可。它会正常工作。

答案 6 :(得分:0)

我不明白为什么pause只是在脚本中短暂地暂停了。这里的答案帮助我解决了问题,最终我弄清楚了我的情况:

开始/ b

如果使用start /b运行应用程序,则该应用程序可能会在延迟后将一些输出发送到stdout。如果在运行pause命令时输出该输出,它将被解释为击键,并且脚本自然会继续。如果将start /b与连接到远程计算机的命令一起使用,您肯定会遇到此问题:

start /b plink pi@192.168.1.100 -pw raspberry "sudo apt-get update"
pause

解决方法是改用pause >nul && pause