18

forfilesを使用して、7日より古いファイルを削除しようとしています。ファイルはUNCパスにあります。以下は私が使用しているスクリプトです。

Forfiles -p \\devexpress\C$\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path" 

しかし、UNCパス(\\machine\share)がサポートされていないというエラーが表示されます。

利用可能な回避策があるようですが、グーグルで明確な答えを得ることができません。

4

3 に答える 3

73

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にあります。

于 2012-01-03T16:02:17.733 に答える
16

問題を再現しようとしたときに発生するエラーは、問題は FORFILES が UNC パスをサポートしていないことではなく、CMD がデフォルト ディレクトリとして UNC パスで開始できないことを示しています。これがあなたの問題でもある場合、それを解決するための3つのアプローチがあります。

  1. 次の方法で、UNC パスをディスク文字に割り当てることができます。NET USE

    NET USE V: \\devexpress\C$
    Forfiles -p V:\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path" 
    
  2. CMD一部の ERASEFILE 実行可能ユーティリティをバイパスして、直接 -C オプションで直接使用することができます。FORFILES

  3. 代わりに、日付チェックロジックを使用してコマンドをバイパスFORFILESして使用できます。FORこのスタック オーバーフローの質問に対する私の回答を参照してくださいWindows バッチ スクリプトでファイルのタイム スタンプの作成を確認するにはどうすればよいですか?

于 2011-09-21T17:14:40.233 に答える
0

私はこれを機能させました:

PushD "\\DS\Tajana\Arhiva\Arhive po danima" &&("forfiles.exe" /s /m "*.*" /d -7 /c "cmd /c del @path") & PopD

コマンドウィンドウに「UNCパスをサポートしていません」というエラーに関するメッセージが表示されますが、それでも7日より古いファイルは削除されます

于 2018-08-17T12:29:43.310 に答える