我正在编写一个批处理脚本,我正在寻找的东西可以让多个hings相互比较
例如,如果有以下文件,我必须查看文件夹以检查所有文件是什么
abc.wxs
verify.wxs
start.wxs
myname.wxs
我想去
makeadmin
否则如果有
abc.wxs
verify.wxs
start.wxs
myname.wxs
verifyme.wxs
abc.dll
我写了一些像
这样的东西IF EXIST "abc.wxs" (
IF EXIST "verify.wxs" (
IF EXIST "start.wxs" (
IF EXIST "myname.wxs" (
goto makeadmin
) else (
echo 1
)
) else (
echo 2
)
) else (
echo 3
)
) else (
echo 4
)
现在我如何整合第二部分
答案 0 :(得分:2)
您可以使用“检查缓冲区”执行此操作。我的意思是每个文件将计数+1到check变量。现在,如果总和与已检查文件的数量相匹配,它将执行特定的操作。 看看下面:
@echo off
set sum=0
IF EXIST "abc.wxs" (
set /a sum=%sum%+1
)
IF EXIST "verify.wxs" (
set /a sum=%sum%+1
)
IF EXIST "start.wxs" (
set /a sum=%sum%+1
)
IF EXIST "myname.wxs" (
set /a sum=%sum%+1
)
IF EXIST "verifyme.wxs" (
set /a sum=%sum%+1
)
IF EXIST "abc.dll" (
set /a sum=%sum%+1
)
if sum==4 (
set sum=0
goto makeadmin
)
if sum==6 (
set sum=0
<insert whatever you want here>
)
pause
通常,我发现使用带数字的计数器非常有用。这对我来说更方便。我希望它有所帮助。
PS 我在2“if”s的每个案例中设置sum = 0因为我没有测试过这个(因为我现在在linux上)而且我担心如果你回到程序的开头,你将会超过数字6。
修改强>
通过使用FOR循环可以缩短上述内容并使其更易于维护。此外,IF中不需要set sum=0
。最后,变量不需要在SET / A中扩展。 set /a sum=sum+1
和set /a sum+=1
@echo off
set sum=0
for %%F in (
abc.wxs
verify.wxs
start.wxs
myname.wxs
verifyme.wxs
abc.dll
) do if exist %%F set /a sum+=1
if sum==4 goto makeadmin
if sum==6 REM do something else