检查文件是否存在于特定路径中而不受子文件夹

时间:2016-12-13 16:42:45

标签: batch-file cmd

我有一个批量检查特定文件,如下所示:

if exist "C:\Program Files\App\App version number\file.exe" (
    echo EXISTS
) else (
   echo NOT EXIST!
)

我希望能够检查任何版本中的file.exe,以便它可能位于:

"C:\Program Files\App\App v.1\file.exe"
"C:\Program Files\App\App v.2\file.exe"

如何在路径中跳过版本号作为要求?

3 个答案:

答案 0 :(得分:2)

以下是使用带条件运算符的WHERE命令的示例。

where /Q /R "C:\Program Files\App" file.exe && echo found || echo not found

答案 1 :(得分:0)

setlocal
set AppDir=
for /d %%d in ("C:\Program Files\App\App v*") do if exist "%%d\file.exe" set "AppDir=%%d"
if defined AppDir (
    echo EXISTS - it's in "%AppDir%"
) else (
    echo NOT EXIST!
)
endlocal

(更新:编辑在变量周围加上引号,以防有一个包含特殊字符的文件名,例如&。感谢@aschipfl指出这一点。另一方面,没有必要使用{ {1}}而不只是%%~d,因为%%d无论如何都不会有任何引号。)

答案 2 :(得分:0)

可能有点矫枉过正但应该有效。

main.bat:

python-devel
libffi
libffi-devel

sub.bat:

@echo off
for /f "tokens=*" %%i in ('sub.bat') do (
    if "x%%i"=="x" (
        echo "Not found!"
    ) ELSE (
        echo "Found in %%i"
    )
)

说明:

主要批次是要执行的批次。它读取子批次的输出并做出正确反应。

将搜索的根目录设置为变量@echo off set your_path="C:\Your Path\" cd /d %your_path% for /r %%p in (file.exe) do echo %%p 。它将更改目录,然后在当前目录中使用your_path ecursive循环进行搜索,并查找您在括号中设置的文件。如果找到该文件,它将/R由主文件读取。

随意提出进一步的问题:)