递归搜索批处理脚本

时间:2019-06-25 15:00:07

标签: batch-file

我正在尝试利用if exist控制语句来搜索整个文件系统以查找文件。

@echo off
echo Enter a file name......
set /P file=
set searchPath=C:\
set findit=%searchPath% and %file%

IF EXIST C:\*%%findit%% (
    echo file exist 
  )else (
    echo file does not exist
  )

但是,如果我搜索确实存在的文件,我仍然会得到不存在该文件的相同搜索结果。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您可以使用Where /R "[dir]" /Q "Pattern"

这使您可以搜索目录路径并返回所有匹配的文件。

IF Exist检查无法检查文件全局

但是您还需要解决的是,此行findit=%searchPath% and %file%的设置%Findit%等于字符串"findit=C:\ and %file%"

这里是一个清理后的版本,似乎正是您想要的版本:

@echo off
echo 
set /P "_File=Enter a file name......"
set "_SearchPath=C:\"

(
  Where /R "%_SearchPath%" /Q "%_File%" && (
    ECHO.File %_File% Exists!
  )
) || (
  ECHO.File %_File% Does Not Exist!
)