トップ回答者
パスに特殊な文字を含む場合のファイル削除について

質問
-
以下コマンドをバッチファイルから実行して、ファイル作成日が1週間以上経過したファイルを削除する運用を実施しております。
powershell -NoProfile -ExecutionPolicy Unrestricted -Command "& { Get-Childitem "削除対象フォルダを指定" -file -recurse | Where-Object {$_.CreationTime -lt (get-date).adddays(-7)} | Remove-Item }"
基本的には、上記で想定通りに処理されるのですが、パスに「!」や「→」が含まれるファイルが削除されません。
Get-Childitemのみで表示する場合は、上記特殊文字を含むパスのファイルも正常に表示されますが、Where-Objectへ$_で渡される箇所で上手く処理出来ていない様に見えます。
回避策をご存じであれば、教えてください。
よろしくお願い致します。
回答
すべての返信
-
バッチファイルから実行とのことですが、 PowerShell -Command の引数全体を "" で括っている中で更に "削除対象フォルダを指定" でもう1回 "" で括られていますが、これは正しいでしょうか?
また質問文の『パスに「!」や「→」が含まれる』とは "削除対象フォルダを指定" の部分のことでしょうか? それともGet-ChildItemが返すパスのことでしょうか? 後者であれば手元の環境では問題なく削除できましたが…。
まさかRead-Only(読み取り専用)属性のために削除されなかったということはありませんよね? その場合は -Force パラメーターで強制的に削除できます。
- 回答の候補に設定 佐祐理 2018年1月26日 8:35