batファイルでフォルダを削除

batファイルはすっごい便利

バッチファイルの作成方法をマスターすると日々のルーティン作業がダブルクリックで終わることがあります

コマンドプロンプトのコマンドを調べたらできると思いますが、非常に難易度が高いと思います
なので、ここではなるべく画像などを使用して解説していきますね

バッチファイルでやりたいこと
  1. 指定した日付のフォルダを削除する
ひろ
ひろ

batファイルでは、Excelのように日付で四則計算をすることができません

日付の仕様を理解して、プログラムを作成する必要があります

しかし、リスクが高いのでやりたくありませんよね?

そこで、《PowerShell》のコマンドを使用します

あき
あき

《PowerShell》 ってなに?

ひろ
ひろ

コマンドプロンプトに置き換わるものみたいですね

正直、良くわかりませんが、 《PowerShell》 のコマンドを使用すれば、日付で四則計算と同じようなことができます

ひろ
ひろ

毎日バックアップのためにフォルダをコピーしていたら、いつの間にやらディスクの容量がいっぱいになってるってことありませんか?

現在の日付から10日以上前のデータを削除するコマンドを入れておけば、常に最新のバックアップファイルを維持している状態になりますね

コマンドプロンプト》と 《PowerShell》 の両方のコマンドを使用して、batファイルを作成します


日付の取得方法

FOR /F “usebackq” %%a IN (powershell [DateTime]::Today.AddDays"("-4")".ToString"("'yyyyMMdd'")") DO SET ad4=%%a

ひろ
ひろ

batファイルにこのコードをそのままパクりましょう

ad4が変数になります。-4が本日の日付から4日前という意味になります。

《-4》を《4》に変更すると、本日の日付から4日後が表示されます

このプログラムコードを覚えておけば、日付の取得方法が簡単になります

フォルダの削除方法

rmdir C:\BK\% ad4 % /s /q

ひろ
ひろ

上のコードを解説しますね

rmdir  → フォルダを削除するコード

C:\BK\% ad4 %  → 削除するフォルダの階層

/s  → ファイルやサブディレクトリも含めて削除する

/q → 削除する際に確認メッセージを表示しない

本日から1日前の日付フォルダを削除する場合

FOR /F “usebackq” %%a IN (powershell [DateTime]::Today.AddDays"("-1")".ToString"("'yyyyMMdd'")") DO SET ad1=%%a

rmdir C:\BK\% ad1 % /s /q

ひろ
ひろ

本日の日付が2021年7月26日なら上のコードでは、2021年7月25日が取得されています。

実際には、【20210725】が取得されます

C:\BK\20210725のフォルダ(中に入っているデータごと)を削除します

まとめ 実際に使用する内容
  1. FOR /F “usebackq” %%a IN (powershell [DateTime]::Today.AddDays"("0")".ToString"("'yyyyMMdd'")") DO SET ad0=%%a
  2. FOR /F “usebackq” %%a IN (powershell [DateTime]::Today.AddDays"("-5")".ToString"("'yyyyMMdd'")") DO SET ad5=%%a
  3. mkdir C:\BK\% ad0 %\192.168.11.2
  4. XCOPY “C:\BK\テストっす” “C:\BK\% ad0 %\192.168.11.2” /d /e /h /r /y
  5. rmdir C:\BK\% ad5 % /s /q
ひろ
ひろ

解説です 本日は2021年7月26日とする

①本日の日付を《ad0》に格納している

②5日前の日付を 《ad5》に格納している

C:\BK\20210726\192.168.11.2フォルダを作成している

④指定したフォルダを③のフォルダへコピーしている

⑤本日より5日前のフォルダを削除している

このbatファイルを毎日クリックしていると、5日目以降は一番古いフォルダが自動で削除されていることになります。タイムスケジューラと組み合わせると、ファイルサーバーとしても使用できそうですね

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA