0

我正在编写一个批处理脚本我正在寻找的是可以将多个铰链相互比较的东西

例如,如果有以下文件,我必须查看文件夹以检查所有文件

  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
)

现在我如何整合第二部分

4

1 回答 1

2

您可以使用“检查缓冲区”来执行此操作。我的意思是每个文件都会对 check 变量计数 +1。现在,如果总和与检查文件的数量匹配,它将执行特定的操作。看看下面:

@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”的每种情况下都设置了sum = 0,因为我没有测试过这个(因为我现在在linux上)我担心如果你回到程序的开头,你'总和将超过数字 6。

编辑
通过使用 FOR 循环,可以缩短上述内容并使其更易于维护。此外,set sum=0在 IF 中也不需要。最后,变量不需要在 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
于 2013-01-01T15:06:08.420 回答