バッチスクリプトで古いフォルダを削除したいが、ファイル名が長いものが含まれいるため全て削除できなくて困っています。
robocopyでファイルサーバーのデータのバックアップをし、
バックアップ用のドライブ内に日付フォルダとして格納しています。
14日前の古いデータはrmdir削除するようにしています。
そもそも、ファイル名が長すぎるものを作らないようにするようなシステム運用にするべきですが、
前任者がファイル名の長さのことを考えずにシステムを作っていたので、
それを避けることができないです。
こちらがバックアップスクリプトになります。
もう1つの考えかたとして、mklinkでシンボリックリンクを作って、削除できないかなと考えてみました。
また、初歩的な質問ですが、forfiles内で複数のコマンドが実行できるのでしょうか?
どなたかアドバイスをお願いします。
バックアップスクリプト1
bat
1set BACKUP_DIRECTORY=E:\Backup 2 3cd %BACKUP_DIRECTORY% 4rem ファイル名が長いものが含まれいるため全て削除できない。 5forfiles /P %BACKUP_DIRECTORY% /D -14 /c "cmd /c rmdir /S /Q @file" 6 7timeout /t 100 /nobreak 8 9exit
起きた現象
ファイル名が長すぎると出たことと、Windows10では絶対パスが259文字以下にしないといけないようです。
C:\>forfiles /P E:\Backup /D -14 /c "cmd /c rmdir /s /q @file" ○○.xlsm - ファイル名が長すぎます。
バックアップスクリプト2
この記事のことを試しましたが
https://atmarkit.itmedia.co.jp/ait/articles/2106/02/news024.html#junction
mklinkでジャンクションリンクを作成 → redim
※ジャンクションリンクを削除しているだけでした。URL記事のものは手動で操作できる意味だけかもしれない。
bat
1set BACKUP_DIRECTORY=E:\Backup 2 3cd %BACKUP_DIRECTORY% 4rem ジャンクションリンクを作成し、それを削除しても元のフォルダが削除されるわけでなかった 5forfiles /P %BACKUP_DIRECTORY% /D -14 /c "cmd /c mklink /J %BACKUP_DIRECTORY%\temp @path & cmd /c rmdir /S /Q %BACKUP_DIRECTORY%\temp" 6 7timeout /t 10 /nobreak 8 9exit
回答1件
あなたの回答
tips
プレビュー