我制作了一个批处理脚本来执行以下任务:
如果文件abc.laccdb
仍在update
文件夹中,请显示消息:wait a minute...
。如果abc.laccdb
文件不在“更新”文件夹中,请显示一条消息:updating data successfully.
。
我的批处理脚本是:
@ECHO OFF
start update_data.vbs
:check
FOR %%F IN (update\abc.laccdb) DO (
echo wait a minute...
goto :check
)
echo updating data successfully
pause
使用上面的脚本,即使abc.laccdb
文件夹中没有Update
文件,也会在命令提示符窗口中连续显示“等待一分钟...”消息。如果abc.laccdb
文件夹中没有Update
文件,则bacth应用程序会运行下一行(echo updating data successfully)
。请更正我的脚本。谢谢你:))
答案 0 :(得分:2)
带有通配符的for
命令将枚举与通配符匹配的文件,但没有通配符,它将无法确保该文件存在,因此do
子句中的代码将始终执行该文件是否存在。
使用
@ECHO OFF
start update_data.vbs
:check
ping -n 3 localhost >nul 2>nul
if exist "update\abc.laccdb" (
echo wait a minute...
goto :check
)
echo updating data successfully
pause
在没有某种等待的情况下进行等待循环并不总是一个好主意。已包含ping
以在循环之间生成2秒暂停以减少CPU使用率。
答案 1 :(得分:1)
使用MC ND的答案:
@ECHO OFF
echo wait a minute...
start update_data.vbs
ping -n 5 localhost >nul 2>nul
:check
if exist "update\abc.laccdb" (
ping -n 3 localhost >nul 2>nul
goto :check
)
echo updating data successfully
pause
提前显示echo wait a minute...
消息...