关于Windows 7:批处理文件命令PAUSE不起作用

Batch file command PAUSE does not work

我正在创建一个简单的批处理文件来帮助完成一些事情,并且我有一些指示,它会打印出来,我希望用户在退出前看到这些指示。目前,窗口关闭得很快。所以我在文件末尾添加了PAUSE,但它不想工作。

我查看了关于so的其他问题,并检查了行尾是否为CRLF,以及文件末尾是否有CRLF

有什么建议吗?


如果最后一个命令失败,暂停将不起作用。

您可以通过将"call"放在正在运行的命令后面(暂停之前的任何命令)来修复它,然后暂停将工作。

例如,我有一个phpunit批处理文件,如下所示:

1
2
phpunit tests/sometests.php
pause

当phpunit失败时,它没有停顿就退出了。将其更改为此选项会使其正确暂停:

1
2
call phpunit tests/sometests.php
pause


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

或者,由于您似乎在使用Windows7,请尝试timeout命令,看看是否有效。


我在Echo上也有问题…假设它是由长批处理文件引起的…暂停正在执行,但它没有暂停,几乎就像执行暂停后按了一个键。

尝试过上述建议的解决方案,但没有奏效。

所以,为了将来的参考,我做了以下工作:

基本上,"暂停>nul&;暂停>nul";每次都有效。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@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


我想我知道问题在哪里,我也有同样的问题。因此,如果您这样做,您将创建一个新文件,并将所有批处理信息放在其中,然后像普通文本一样保存它,然后重命名扩展名,它将不起作用:)。您必须通过文本编辑器保存它,从中您必须选择"批处理文件(.bat;.cmd;*.nt)",例如记事本++,这可能是因为编码,所以请这样做,我相信它会正常。GL!:)


我也有同样的问题。发生这种情况的原因有两个:第一个是以管理员身份运行批处理文件时。

我已将批处理文件移到桌面,并以管理员身份进行尝试,它工作正常。我已尝试将批处理文件移动到任何磁盘根目录(如c:d:etc),但它工作正常。我尝试将批处理文件移到任何带有空格的目录中,但它工作正常。

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

只需找到这个特殊字符并将其从文件夹名称中删除。它会正常工作。


除了Tim的回答之外,如果希望窗口始终显示,还可以编写.bat文件,如下所示:

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