101

dir1 と dir2 のすべての .jpg と .txt ファイル (たとえば) を削除する必要があります。

私が試したのは:

@echo off
FOR %%p IN (C:\testFolder D:\testFolder) DO FOR %%t IN (*.jpg *.txt) DO del /s %%p\%%t

一部のディレクトリでは機能しました。他の人ではそうではありませんでした。

たとえば、これは何もしませんでした:

@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t

2 番目のスニペットで何が欠けていますか? なぜうまくいかなかったのですか?

4

6 に答える 6

247

delコマンドでワイルドカードを使用して/S、再帰的に実行できます。

del /S *.jpg

補遺

@BmyGuestは、反対票を投じた回答(del /s c:\*.blaawbg)が私の回答と異なる理由を尋ねました。

実行との間に大きな違いがあります。最初のコマンドは現在の場所から実行されますが、2番目のコマンドはドライブ全体で実行されます。del /S *.jpgdel /S C:\*.jpg

2番目のコマンドを使用してファイルを削除するシナリオではjpg、一部のアプリケーションが機能しなくなり、家族の写真がすべて失われる可能性があります。これは非常に煩わしいことですが、コンピュータは引き続き実行できます。

dllただし、あるプロジェクトで作業していて、内のすべてのファイルを削除したい場合はmyProject\dll、次のバッチファイルを実行します。

@echo off

REM This short script will only remove dlls from my project... or will it?

cd \myProject\dll
del /S /Q C:\*.dll

次に、ドライブからすべてのdllファイルを削除することになります。C:\すべてのアプリケーションが機能しなくなり、コンピューターが役に立たなくなり、次の再起動時に4次元にテレポートされ、永遠に立ち往生します。

ここでの教訓は、回避できる場合は、ドライブのルートで(または、などの危険な可能性のある他の場所で%windir%)そのようなコマンドを直接実行しないことです。常に可能な限りローカルで実行してください。

補遺2

ワイルドカードメソッドは、8.3形式と「ロングネーム」形式のすべてのファイル名を照合しようとします。たとえば、*.dllとに一致project.dll project.dlloldますが、これは驚くべきことです。詳細については、SUに関するこの回答を参照してください。

于 2012-10-30T13:12:34.023 に答える
-11

C: ドライブの特定の .extensions を削除しようとしている場合は、次のコマンドを使用します。

del /s c:\*.blaawbg

暗号化ウイルスに感染した顧客がいて、すべてのジャンク ファイルを見つけて削除する必要がありました。

于 2015-04-23T01:53:56.337 に答える