![Window Batch,代码在粘贴到命令提示符中时会起作用,但作为批处理文件运行时则不起作用](https://linux22.com/image/1629564/Window%20Batch%EF%BC%8C%E4%BB%A3%E7%A0%81%E5%9C%A8%E7%B2%98%E8%B4%B4%E5%88%B0%E5%91%BD%E4%BB%A4%E6%8F%90%E7%A4%BA%E7%AC%A6%E4%B8%AD%E6%97%B6%E4%BC%9A%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%8C%E4%BD%86%E4%BD%9C%E4%B8%BA%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E8%BF%90%E8%A1%8C%E6%97%B6%E5%88%99%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我在编写一段用于计算文本文件中某个字符串出现次数的代码时遇到了问题。当粘贴到命令提示符中时,它可以完美运行,但当以 .bat 文件的形式运行时,它会在完成之前立即关闭(它不会在最后一个 echo 命令之前执行暂停)。
set Logpath="C:\Users\bob\Desktop\project\a.txt"
set StringToLookFor="asdf"
set NUM=0
for /F %N in ('find /C %StringToLookFor% ^< %Logpath%') do set NUM=%N
pause
echo %NUM%
答案1
在 N 之前添加第二个 % 显然解决了这个问题。
set Logpath="C:\Users\bob\Desktop\project\a.txt"
set StringToLookFor="asdf"
set NUM=0
for /F %%N in ('find /C %StringToLookFor% ^< %Logpath%') do set NUM=%%N
pause
echo %NUM%
答案2
尝试使用该Timeout
命令。
使用方式如下:timeout {your time in seconds} >nul
>nul
用于使控制台静音以进行显示。代码运行不需要它。
输入代码时不要使用{}括号。例如,我将使用它10秒:
timeout 10 >nul
, 不是timeout {10} >nul
。
如果你输入正确,它应该有一个到下一行的时间限制。总的来说,你应该有一段等待的时间。