使用调用 <file.bat> 结果 "sleep is not recognized as an internal or external command.."
Using call <file.bat> results in "sleep is not recognized as an internal or external command.."
我有一个在 for 循环中调用其他命令的脚本:
for %%x in (%CMDS::= %) do (
call C:\%%x %1%
echo "%%x complete"
)
但是,运行这会导致控制台吐出:
'sleep' is not recognized as an internal or external command,
operable program or batch file.
这是因为我循环遍历的文件和 运行 中包含这些命令。为什么如果我 运行 这些文件一个一个地工作,但是当使用 call
链接时他们不工作?我可以 sleep
在这个脚本之外的终端中..
此致
批量没有sleep
命令。这就是您收到此错误的原因。
编辑:
Windows CMD 或 Batch 中没有 sleep
命令。但是:由于您可以在控制台中使用该命令,我想可能有一个名为 sleep
的脚本或程序。此脚本或程序可能位于您的 工作目录 或 %PATH%
变量中包含的其他目录中。如果是这种情况,则可能是您的脚本由于路径问题而给您这个错误。
说,你在 C:\SomeFolder
里面有一个 sleep.exe
。您正在调用另一个将当前目录更改为 D:\AnotherFolder
的脚本或命令。现在另一个脚本或命令试图执行你神秘的 sleep
命令,假设工作目录是 C:\SomeFolder
但因为你现在在不同的文件夹 (D:\SnotherFolder
) 中,sleep
可以被发现。此外,当使用 call
时,调用脚本的变量范围也成为被调用脚本的范围。所以变量也有可能被不同的脚本覆盖。这样的变量可能包含您的睡眠命令的路径。这也可能导致错误。
感谢 ,我通过将 .bat
文件中的 sleep 5
替换为:
解决了这个错误
powershell -Command "& {sleep 5}"
现在工作正常。更好的是,还测试了 Stephan 的建议:
timeout 5
更简单,并显示像
这样的好消息
Waiting for 0 seconds, press a key to continue ...
请注意,某些 Windows 版本需要 /t
选项来定义时间。
timeout /t 5
我有一个在 for 循环中调用其他命令的脚本:
for %%x in (%CMDS::= %) do (
call C:\%%x %1%
echo "%%x complete"
)
但是,运行这会导致控制台吐出:
'sleep' is not recognized as an internal or external command,
operable program or batch file.
这是因为我循环遍历的文件和 运行 中包含这些命令。为什么如果我 运行 这些文件一个一个地工作,但是当使用 call
链接时他们不工作?我可以 sleep
在这个脚本之外的终端中..
此致
批量没有sleep
命令。这就是您收到此错误的原因。
编辑:
Windows CMD 或 Batch 中没有 sleep
命令。但是:由于您可以在控制台中使用该命令,我想可能有一个名为 sleep
的脚本或程序。此脚本或程序可能位于您的 工作目录 或 %PATH%
变量中包含的其他目录中。如果是这种情况,则可能是您的脚本由于路径问题而给您这个错误。
说,你在 C:\SomeFolder
里面有一个 sleep.exe
。您正在调用另一个将当前目录更改为 D:\AnotherFolder
的脚本或命令。现在另一个脚本或命令试图执行你神秘的 sleep
命令,假设工作目录是 C:\SomeFolder
但因为你现在在不同的文件夹 (D:\SnotherFolder
) 中,sleep
可以被发现。此外,当使用 call
时,调用脚本的变量范围也成为被调用脚本的范围。所以变量也有可能被不同的脚本覆盖。这样的变量可能包含您的睡眠命令的路径。这也可能导致错误。
感谢 .bat
文件中的 sleep 5
替换为:
powershell -Command "& {sleep 5}"
现在工作正常。更好的是,还测试了 Stephan 的建议:
timeout 5
更简单,并显示像
这样的好消息Waiting for 0 seconds, press a key to continue ...
请注意,某些 Windows 版本需要 /t
选项来定义时间。
timeout /t 5