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