批处理:使用FOR命令检查文件夹中的文件

时间:2015-04-23 06:08:08

标签: batch-file

我制作了一个批处理脚本来执行以下任务: 如果文件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)。请更正我的脚本。谢谢你:))

2 个答案:

答案 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...消息...