ディレクトリ内のすべてのファイルと、一部のファイル拡張子と一致しないサブフォルダーを含む単純なバッチ ファイルを作成しようとしています。
ロジックは次のようになります。
GOTO directory
delete !(.avi, .mkv, .mp4)
これは簡単だと思いましたが、何度も試してみましたが、うまくいきませんでした!
ディレクトリ内のすべてのファイルと、一部のファイル拡張子と一致しないサブフォルダーを含む単純なバッチ ファイルを作成しようとしています。
ロジックは次のようになります。
GOTO directory
delete !(.avi, .mkv, .mp4)
これは簡単だと思いましたが、何度も試してみましたが、うまくいきませんでした!
この質問は、サブディレクトリからも削除したいことを除けば、Delete *.*とほぼ同じです。上位2つの回答の次の適応のいずれかが機能するはずです。
次の両方は、バッチ スクリプトが削除されるフォルダー階層にないことを前提としています。
@echo off
for /f %%F in ('dir /s /b /a-d "yourDirPath\*"^| findstr /vile ".avi, .mkv, .mp4"') do del "%%F"
.
@echo off
setlocal EnableDelayedExpansion
set "exclude=.avi.mkv.mp4."
for /r "yourDirPath" %%F in (*) do if /I "%exclude%" == "!exclude:%%~xF.=!" del "%%F"
スクリプトが階層内にある場合は、追加の IF ステートメントで問題を解決できます。
@echo off
for /f %%F in ('dir /s /b /a-d "yourDirPath\*"^| findstr /vile ".avi, .mkv, .mp4"') do if "%%~fF" neq "%~f0" del "%%F"
.
@echo off
setlocal EnableDelayedExpansion
set "exclude=.avi.mkv.mp4."
for /r "yourDirPath" %%F in (*) do if /I "%exclude%" == "!exclude:%%~xF.=!" if "%%~fF" neq "%~f0" del "%%F"
@echo off
for /r C:\test %%a in (*) do (
if not %%~xa==.avi (
if not %%~xa==.mkv (
if not %%~xa==.mp4 (
del /f /q "%%a"
)
)
)
)
if
削除したくない拡張子の を繰り返します。
この回答はいくつかの拡張機能で機能しますが、それ以上の拡張機能がある場合は、こちらでより良い回答を見つけることができます。
この質問に似ています:ワイルドカードに一致しないファイルを削除するにはどうすればよいですか?
FOR /R [directory] %%F IN (*.*) DO IF NOT "%%~xF" == ".[extension]" DEL /F /S "%%F"