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

时间:2017-08-16 09:41:05

标签: windows shell batch-file windows-scripting

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

如果文件未到达给定目录,则脚本会在再次检查之前休眠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  
)

1 个答案:

答案 0 :(得分:0)

详细说明我的评论。

    如果找不到匹配的文件,
  • dir会输出错误消息。
  • findstr不关心它重要的行。
  • 在没有查找时抑制错误输出将导致执行部分没有执行,因为没有任何输出。
@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