私は次のようにすることを行うだろう:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "FILEMASK=%~1"
for /F "eol=| delims=" %%F in ('
dir /B /A:-D "%FILEMASK%" ^| findstr /R "\.[0-9][0-9]*$"
') do (
del /P /F "%%~F"
)
endlocal
exit /B
をこのバッチプログラムを使用するには、提供引数としてファイルマスク。あなたがそれを与えなければ、現在のディレクトリが列挙されます。
del
のスイッチがテスト目的で追加されているため、プロンプトが表示されないようにするには、単に削除してください。 /F
スイッチは、読み取り専用ファイルを強制的に削除します。あなたがそれを望まないなら、それも削除してください。
私は上記の話をしていたファイルマスクは、それぞれ、文字の配列、または単一の文字のために立って、世界的なワイルドカード*
だけ?
をサポートする、唯一のdir
コマンドです。このMicrosoftの記事:Using wildcard charactersも参照してください。
これにも応じて数字のみに一致するマスクを構築するための直接的な方法は、ありません:Command-prompt wildcards for digits?したがって
私は任意のファイルをフィルタするために、正規表現の小さなセットをサポートfindstr
コマンドを使用しています純粋に数字のファイル拡張子を持っています。この便利なコマンドの詳細については、マイクロソフトの記事FindstrとサイトFINDSTRを参照してください。複数のフォルダ内のファイルを削除するには
@echo off
setlocal EnableDelayedExpansion
for %%a in (*.*) do (
set "ext=%%~Xa"
set /A "ext=!ext:~1!"
if !ext! neq 0 del "%%a"
)
、ちょうどfor
コマンドに/R
スイッチを追加します。
[PowerShell](https://msdn.microsoft.com/en-us/powershell)は、すべてのWindows 7システムにプリインストールされています。 PowerShellスクリプトは、Windowsバッチスクリプトよりもはるかに簡単に作成できます。それはオプションですか? – IInspectable
@IInspectableそれは大丈夫でしょう! –