0

最近、私はこのバッチ ファイルを作成していて、気が狂いそうになっています。

私のフォルダー構造は C:\MainFolder\Dir\ のようなもので、「Dir」には多くのサブフォルダーとファイルが含まれています。これらのサブ フォルダ内には、「C.txt」と「D.txt」の 2 つのファイルを含む多くのファイルとサブ フォルダがあります。私のタスクは、これらのサブ フォルダ内の他のすべてを削除し、これら 2 つのファイルのみを保持することです。しかし、それは機能していません。助けてください。

私のコードは:

@echo off
FOR /f "tokens=*" %%M in ('dir /b "C:\MainFolder\Dir\"') DO (
For /f "tokens=*" %%S in ('dir /b "C:\MainFolder\Dir\%%M"') DO ( 
if "%%S"=="C.txt" ( 
echo Found C
) 
else if "%%S"=="D.txt" ( 
echo Found D
) 
else (
::Code to delete the file Or Directory
echo Deleted %%S
)

)
)
echo Deleted Unwanted Content
pause
4

1 に答える 1

1

ここには複数の問題があります。

は:elseと同じ行に表示される必要があります。(

if "%%S"=="C.txt" ( 
  echo Found C
) else if "%%S"=="D.txt" ( 
  echo Found D
) else (
  ::Code to delete the file Or Directory
  echo Deleted %%S
)

コメントには使用しないでください::。特定の場所で壊れます。rem代わりに使用してください:

) else (
  REM Code to delete the file Or Directory
  echo Deleted %%S
)

そして、コードをインデントしてください。それはそれを読むことをはるかに快適にします:

@echo off
FOR /f "tokens=*" %%M in ('dir /b "C:\MainFolder\Dir\"') DO (
  For /f "tokens=*" %%S in ('dir /b "C:\MainFolder\Dir\%%M"') DO ( 
    if "%%S"=="C.txt" ( 
      echo Found C
    ) else if "%%S"=="D.txt" ( 
      echo Found D
    ) else (
      REM Code to delete the file Or Directory
      echo Deleted %%S
    )
  )
)
echo Deleted Unwanted Content
pause
于 2012-08-27T10:46:14.010 に答える