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
)

次に、2番目の部分を統合するにはどうすればよいですか

4

1 に答える 1

2

これは、「チェックバッファ」を使用して行うことができます。つまり、各ファイルはチェック変数に+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私はこれをテストしていないので(私は今Linuxを使用しているので)、2つの「if」のそれぞれの場合にsum = 0を設定しています。プログラムの最初に戻ると、合計が6を超えてしまいます。

編集
上記は、FORループを使用することで短縮でき、保守が容易になります。また、set sum=0IF内では必要ありません。最後に、変数は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 に答える