web-dev-qa-db-ja.com

UNCパスを持つforfiles

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

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

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

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

17
kla

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

  1. Net Useを使用して、UNCパスをディスク文字に割り当てることができます

    Net Use V: \\devexpress\C$
    Forfiles -p V:\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path" 
    
  2. CMDをバイパスし、FORFILESの-​​Cオプションで直接いくつかのERASEFILE実行可能ユーティリティを直接使用できます。

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

15
PA.

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

67
jirkamat

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

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

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

0
Hrvoje Reich