【问题标题】:forfiles with UNC path具有 UNC 路径的文件
【发布时间】:2011-09-21 16:43:07
【问题描述】:

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

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

但我收到一条错误消息,提示不支持 UNC 路径 (\\machine\share)。

似乎有可用的解决方法,但无法通过谷歌搜索得到明确的答案。

【问题讨论】:

    标签: batch-file forfiles


    【解决方案1】:

    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

    【讨论】:

    • 另外值得注意的是popd 命令会在之后取消映射驱动器
    【解决方案2】:

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

    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 命令。请参阅我对堆栈溢出问题的回答 How can I check the time stamp creation of a file in a Windows batch script?

    【讨论】:

      【解决方案3】:

      我得到了这个工作:

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

      虽然我在 cmd 窗口中收到一条错误消息“不支持 UNC 路径”,但它仍然会删除超过 7 天的文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多