在for循环中设置一个值

时间:2018-11-23 12:41:09

标签: batch-file

我正在尝试在“窗口路径”上搜索文件。因此,我创建了一个循环,并为每个目录查找文件。如果找到,我升旗。

我的文件使用者:

    @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

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%之间使用(几乎)任何命令都可能更改错误级别。