2015-04-23 64 views
0

我已經制作了批處理腳本來執行以下任務: 如果文件abc.laccdb仍在update文件夾中,則顯示消息:wait a minute...。如果abc.laccdb文件不在「更新」文件夾中,則顯示消息:updating data successfully.批處理:使用FOR命令檢查文件夾中的文件

我的批處理腳本是:

@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文件夾中,則應正確運行下一行(echo updating data successfully)。請糾正我的腳本。謝謝:)

回答

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...消息提前...

2

A 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使用量。

+0

感謝您的建議,但留不工作。在命令提示符窗口 – flyingbird013

+0

@ flyingbird013中連續顯示消息「wait a minute ...」,因爲文件夾/文件的路徑與當前活動目錄(不是批處理文件夾)相關,請確保文件夾/文件檢查是正確的。每等待一分鐘,等待一分鐘,直到標誌文件被刪除。如果你不想重複,在':check'標籤 –

+0

好消息之前移動'echo'。在將'ping -n 3 localhost> nul 2> nul'行改爲'ping -n 6 localhost > nul 5> nul',我的問題解決了。非常感謝你 – flyingbird013

相關問題