我有一个批量检查特定文件,如下所示:
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"
如何在路径中跳过版本号作为要求?
答案 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
由主文件读取。
随意提出进一步的问题:)