我正在尝试在“窗口路径”上搜索文件。因此,我创建了一个循环,并为每个目录查找文件。如果找到,我升旗。
我的文件使用者:
@Echo OFF
SET path=%PATH%;C:\Program Files\7-Zip;C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin
SET /A var=0
for %%G in ("%path:;=" "%") do IF EXIST 7x.exe (SET /A var = 1 )
IF /I "%var%" EQU "1" ECHO equality with 1
IF /I "%var%" EQU "0" ECHO equality with 0
但是即使知道文件已经存在,我的变量在循环后仍为0。
因此,这引起了一些问题:
1)如何在循环中设置变量var
2)我可以在检查文件是否存在之前测试var的值
伪代码:If (var == 0 && EXIST 7x.exe) set var = 1
答案 0 :(得分:2)
where
命令(默认情况下)通过路径搜索文件(它也可以用于通过/R
开关搜索文件夹树甚至整个磁盘,而您显然不会这样做)不需要这里)。如果找到文件,则返回错误级别0
,如果找不到文件,则返回错误级别1
。甚至还有一个/Q
(安静)开关。因此,这非常容易:
where /q 7z.exe
set var=%errorlevel%
echo equality with %var%
您也可以直接使用set
来代替echo equality with %errorlevel%
命令,但是请记住,在where
和%errorlevel%
之间使用(几乎)任何命令都可能更改错误级别。