Forfilesを使用して、7日より古いファイルを削除しようとしています。ファイルはUNCパスにあります。以下は私が使用しているスクリプトです。
Forfiles -p \\devexpress\C$\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path"
しかし、UNCパス(\ machine\share)はサポートされていないというエラーメッセージが表示されます。
回避策はあるようですが、グーグルで明確な答えを得ることができません。
問題を再現しようとすると、エラーが発生します。問題は、FORFILESがUNCパスをサポートしていないことではなく、CMDがデフォルトのディレクトリとしてUNCパスで開始できないことです。これもあなたの問題である場合、それを解決するための3つのアプローチがあります。
Net Use
を使用して、UNCパスをディスク文字に割り当てることができます
Net Use V: \\devexpress\C$
Forfiles -p V:\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path"
CMD
をバイパスし、FORFILES
の-Cオプションで直接いくつかのERASEFILE実行可能ユーティリティを直接使用できます。
FORFILES
をバイパスして、代わりにFOR
コマンドをいくつかの日付チェックロジックと共に使用することができます。このスタックオーバーフローの質問に対する私の回答を参照してください Windowsバッチスクリプトでファイルのタイムスタンプの作成を確認するにはどうすればよいですか?
PAの最初の答えに対する拡張ソリューションは次のとおりです。
PushD "\\devexpress\C$\FULL\" &&(
forfiles -s -m *.* -d -7 -c "cmd /c del /q @path"
) & PopD
PushDコマンドは、UNCパスを空きドライブ文字に自動的にマップするため、これは移植可能なアプローチです。 http://www.petri.co.il/forums/showthread.php?t=24241 にあります。
私はこれを機能させました:
PushD "\\DS\Tajana\Arhiva\Arhive po danima" &&("forfiles.exe" /s /m "*.*" /d -7 /c "cmd /c del @path") & PopD
コマンドウィンドウでエラーに関するメッセージ「UNCパスをサポートしていません」が表示されますが、それでも7日より古いファイルは削除されます