用于检查文件目录的Windows脚本

用于检查文件目录的Windows脚本,windows,shell,batch-file,windows-scripting,Windows,Shell,Batch File,Windows Scripting,正在尝试执行一些脚本以在windows服务器上运行。代码的目的是检查给定目录F:\TestFolder是否有1个或多个文件到达,这些文件的名称以IB30321*开头 如果文件未到达给定目录,则脚本将休眠5分钟,然后再次检查。找到正确的文件后,它将退出脚本 不幸的是,我遇到了以下错误,我能做些什么来解决这个问题 FINDSTR:错误的命令行 找到的文件数不正确,应为1个文件 我想就我的评论再详细阐述一下 如果找不到匹配的文件,dir将输出错误消息 findstr不在乎它计算多少行 由于没有任何输

正在尝试执行一些脚本以在windows服务器上运行。代码的目的是检查给定目录F:\TestFolder是否有1个或多个文件到达,这些文件的名称以IB30321*开头

如果文件未到达给定目录,则脚本将休眠5分钟,然后再次检查。找到正确的文件后,它将退出脚本

不幸的是,我遇到了以下错误,我能做些什么来解决这个问题

FINDSTR:错误的命令行
找到的文件数不正确,应为1个文件


我想就我的评论再详细阐述一下

  • 如果找不到匹配的文件,dir将输出错误消息
  • findstr不在乎它计算多少行
  • 由于没有任何输出,因此在没有找到时抑制错误输出将不会执行do部分


将dir命令的错误输出重定向到nul
2^>nul
@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  
)
@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