2017-08-16 29 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 
相关问题