web-dev-qa-db-ja.com

名前に特定の文字列が含まれていないすべてのファイルを削除する方法

私は見た 特定のパターンに一致しないすべてのファイルを削除する-Windowsコマンドライン

ただし、ファイル名に特定の文字列が含まれていないnotをすべて削除する方法については何も見ていません。

ファイル名に「MS」(大文字と小文字を区別)が含まれていないフォルダーとそのサブフォルダー内のすべてのZip(他のファイルは影響を受けない)ファイルを削除するにはどうすればよいですか。

これらの文字は他の文字の隣にある場合があります(たとえば、「MS」が含まれているため、ファイル名「ABCMSABC」は保持する必要がありますが、他のすべてのファイルは削除する必要があります)。複数のファイルには「MS」が含まれます。

4
User093203920

名前に「MS」が含まれていないフォルダー/サブフォルダー内のZipファイルを削除するにはどうすればよいですか?

次のバッチファイルを使用します。

@echo off
setlocal disableDelayedExpansion
for /f "usebackq tokens=*" %%i in (`dir /a:-d /b /s *.Zip ^| findstr /v "[\\][^\\]*MS[^\\]*$"` ) do (
  echo del /s /q %%i
)
endlocal

ノート:

  • バッチファイルの機能に満足したら、echoを削除します。
  • comment by dbenham に従って更新された回答は、文字列「MS」を含むディレクトリを許可します。
  • スペースを含むファイル名を処理するように回答が更新されました。

参考文献

  • Windows CMDコマンドラインのA-Zインデックス -Windowsコマンドラインに関連するすべてのものの優れたリファレンス。
  • del -1つ以上のファイルを削除します。
  • dir -ファイルとサブフォルダーのリストを表示します。
  • findstr -ファイル内の文字列を検索します。
  • / fの場合 -別のコマンドの結果に対してコマンドをループします。
5
DavidPostill