具有UNC路径的forfiles

kla*_*kla 16 batch-file forfiles

我试图使用forfiles删除超过7天的文件.这些文件位于UNC路径中.下面是我正在使用的脚本.

Forfiles -p \\devexpress\C$\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path" 
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误,提到不支持UNC路径(\ machine\share).

似乎有可用的解决方法,但无法得到一个明确的答案谷歌搜索.

jir*_*mat 66

PA的第一个答案的增强解决方案是:

PushD "\\devexpress\C$\FULL\" &&(
    forfiles -s -m *.* -d -7 -c "cmd /c del /q @path" 
     ) & PopD
Run Code Online (Sandbox Code Playgroud)

PushD命令自动将UNC路径映射到空闲驱动器号,因此这是可移植的方法.发现于http://www.petri.co.il/forums/showthread.php?t=24241.


PA.*_*PA. 15

我在尝试重现问题时遇到的错误表明问题不在于FORFILES没有支持UNC Path,而是CMD无法以UNC路径作为默认目录启动.如果这也是您的问题,有三种方法可以解决它.

  1. 您可以将UNC路径分配给磁盘盘符 NET USE

    NET USE V: \\devexpress\C$
    Forfiles -p V:\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path" 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您可以CMD直接在-C选项中绕过并直接使用一些ERASEFILE可执行实用程序FORFILES

  3. 您可以绕过FORFILES并使用FOR带有日期检查逻辑的命令.请参阅我对此堆栈溢出问题的回答如何在Windows批处理脚本中检查文件的时间戳创建?