拡張子が.flacのファイルが含まれていないメインディレクトリのすべてのディレクトリを削除する方法.mp3 .m4a?特定の種類のファイルを含まないディレクトリのサブディレクトリを削除するにはどうすればよいですか?
削除が必要なディレクトリの多くは空ではありませんが、それらのファイルは含まれていません。
拡張子が.flacのファイルが含まれていないメインディレクトリのすべてのディレクトリを削除する方法.mp3 .m4a?特定の種類のファイルを含まないディレクトリのサブディレクトリを削除するにはどうすればよいですか?
削除が必要なディレクトリの多くは空ではありませんが、それらのファイルは含まれていません。
私たちは、フォルダC:\Temp\Test
は、これらのサブフォルダに次の非隠されたサブフォルダとファイルが含まれていると仮定しましょう:
C:\Temp\Test
のものを5つのサブフォルダを処理するバッチファイル:
@echo off
for /D %%D in ("C:\Temp\Test\*") do call :CheckFolder "%%D"
goto :EOF
:CheckFolder
for %%I in (flac mp3 m4a) do (
if exist "%~1\*.%%I" (
echo Folder %1 contains *.%%I file.
goto :EOF
)
)
echo Delete folder %1
echo rd /Q /S %1
goto :EOF
は、バッチファイルが出力を生成します
Delete folder "C:\Temp\Test\Folder 1"
rd /Q /S "C:\Temp\Test\Folder 1"
Folder "C:\Temp\Test\Folder 2" contains *.mp3 file.
Folder "C:\Temp\Test\Folder 3" contains *.m4a file.
Delete folder "C:\Temp\Test\Folder 4"
rd /Q /S "C:\Temp\Test\Folder 4"
Delete folder "C:\Temp\Test\Folder 5"
rd /Q /S "C:\Temp\Test\Folder 5"
バッチファイルが期待どおりに動作しているようです。次のステップでは、RDコマンドでフォルダを削除することを実際に実行するには、最後の1行からecho
を削除します。バッチ出力は以下のようになります。
Delete folder "C:\Temp\Test\Folder 1"
Folder "C:\Temp\Test\Folder 2" contains *.mp3 file.
Folder "C:\Temp\Test\Folder 3" contains *.m4a file.
Delete folder "C:\Temp\Test\Folder 4"
Delete folder "C:\Temp\Test\Folder 5"
フォルダC:\Temp\Test
は今だけ含まれています
ミッションは達成しました。
使用されているコマンドとその動作方法を理解するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行して、コマンドごとに表示されているすべてのヘルプページをすべてよく読んでください。ここで
call /?
echo /?
for /?
goto /?
if /?
rd /?
は奇妙な代替手段です。
特定の質問の場合は、選択した親ディレクトリと必要な拡張子がそれぞれ3行目と4行目の2つの変数に入力されていることを確認してください。
@Echo Off
SetLocal EnableDelayedExpansion
Set "ParD=C:\Users\blazin8s\Main Directory"
Set "Exts=*.flac *.mp3 *.m4a"
For /D %%A In ("%ParD%\*") Do Call :Sub "%%~fA"
Timeout -1
Exit/B
:Sub
Set "i=0"
For /F "Tokens=1-3" %%A In ('RoboCopy %1 Null /E /LEV:1 /NFL /NDL /NJH /L %Exts%
') Do If %%B==: (Set/A "i+=1"
If !i! Equ 2 If %%C Equ 0 Echo=RD/S/Q %1)
上記すぎる変更することができ、次いで、11 (オプション)ライン、上/S
に最初の変更/E
:Gtr
に
変更ライン13上の第二Equ
ディレクトリだけを除去します指定した拡張子のいずれかを含む場合によっては、RD/S/Q
をMove
に変更して、指定した拡張子を含むディレクトリだけを移動することもできます。
オリジナルの投稿の行13を0
から4
に変更して、指定した拡張子に一致する4つのファイルを含むディレクトリを削除することもできます。
注 - すべての場合において、スクリプトだけにどうなるかを紹介します。あなたがその出力に満足している場合は、ライン13からEcho=
を削除し、いずれかのライン6から-
を削除するか、行のすべての6
for
ループ、外側に1回の繰り返し処理を使用してそれを行うだろう
ディレクトリと内部のファイルタイプを繰り返します。内部変数は、あらかじめ定義された型のうち少なくとも1つのファイルがある場合にのみ反復します。この場合、フラグ変数が設定されます。内部ループの後、そのフラグがチェックされ、条件付きでディレクトリの削除が行われます。
for /D %%D in ("D:\root\*") do (
set "FLAG="
pushd "%%~D"
for %%F in ("*.flac" "*.mp3" "*.m4a") do set "FLAG=#"
popd
if not defined FLAG rmdir /S /Q "%%~D"
)