簡単に多かれ少なかれ単一のコマンドラインで次のバッチコードを使用して行うことができます。このタスク:
@echo off
for /F "skip=3 delims=" %%I in ('dir "C:\Temp\backup_*" /AD /B /O-N 2^>nul') do rd /Q /S "C:\Temp\%%I"
コマンドので/AD
のリターンが原因/B
との裸の形式で、ちょうどディレクトリ名を命じたDIRディレクトリ名C:\Temp
に/O-N
があり、名前がbackup_
で始まるため、名前が逆です。
名前を逆順にすると、日付フォーマットYYYY-MM-DD
も日付順に自動的に使用されます。最新のバックアップフォルダが最初に出力され、最も古いフォルダが最後にコマンドDIRによって最後に出力されます。 FOR
コマンドコマンドDIRの出力の最初の3行をスキップし、したがって3つの最新のバックアップフォルダを無視します。他のすべてのバックアップフォルダはforで処理され、結果としてRDというコマンドで削除されます。それはパターンbackup_*
に一致するフォルダを見つけることができない場合
コマンドDIRはSTDERRにエラーメッセージを出力します。このエラーメッセージは、STDERRからNULにエラーメッセージをリダイレクトすることによって、2>nul
で抑制されます。リダイレクションオペレータ>
は、ここでは^
でエスケープする必要があります。そうしないと、Windowsコマンドインタープリタは、FOR
のリダイレクトを>
として解釈し、構文エラーメッセージを表示します。
注:コマンドDIRここリターンだけで、バックアップフォルダ名パスを含まないため、親フォルダのパスがDIRコマンドに、コードに二度書かれており、また、コマンドRDにする必要があります。
使用されているコマンドとその動作方法を理解するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行して、コマンドごとに表示されているすべてのヘルプページをすべてよく読んでください。
echo /?
dir /?
for /?
rd /?
もUsing command redirection operatorsに関するMicrosoftの記事を参照してください。
これは問題ではありませんが、タスク要求です!助けが必要な場合は、まずあなた自身の努力を示す必要があります!無料でコードを書いてはいけません!どうぞお求めください(http://stackoverflow.com/help/how-to-ask)! – aschipfl
なぜそんなに厳しい?私はこのフォーラムでは新しく、「どのようにaks」を読んでいないのは残念です。すぐに投稿を更新します;) – ButerBreaGrieneTsiis