2017-08-16 69 views
-1

試圖在Windows服務器上運行一些腳本。該代碼的目的是檢查給定的目錄F:\ TestFolder的一個或多個文件的到達,該文件的名稱以IB30321 *開頭。用於檢查文件目錄的Windows腳本

如果文件沒有到達給定的目錄,那麼腳本會在睡眠5分鐘後再次檢查。一旦找到正確的文件,它將退出腳本。

不幸的是我收到以下錯誤,任何想法我可以做什麼來解決這個問題?

FINDSTR:錯誤的命令行
數目不正確的文件中發現,1檔預期

@Echo off 
cd /D "%F:\TestFolder%" 

Set numfiles=0 

For /f "tokens=1,* delims=:" %%A in (  
'Dir /B "IB30321*" ^| findstr /n^' 
) DO Set numfiles=%%a&Set filename=%%B 

If %numfiles% equ 1 (  
echo %filename% found 
    exit /B 0 
) else ( 
    echo "Incorrect number of files found, 1 file expected" 
    set numfiles=0 
    Timeout /T 300 
) 
+0

dir命令重定向錯誤輸出到NUL'2 ^> NUL' – LotPings

回答

0

更詳細地說明了一下我的意見。

  • 如果找不到匹配的文件,dir會輸出錯誤消息。
  • findstr不關心它的重要性。
  • 抑制沒有找到的錯誤輸出將會執行do部分,因爲沒有任何輸出。

@Echo off 
cd /D "%F:\TestFolder%" 

:Loop 
Set numfiles=0 
For /f "tokens=1,* delims=:" %%A in (  
    'Dir /B "IB30321*" 2^>NUL ^| findstr /n^' 
) DO Set numfiles=%%a&Set filename=%%B 

If %numfiles% equ 1 (  
    echo %filename% found 
    exit /B 0 
) else ( 
    echo "Incorrect number of files found, 1 file expected" 
    Timeout /T 300 
) 
Goto :Loop 
相關問題