批处理文件“unc 路径不受支持”复制文件

批处理文件“unc 路径不受支持”复制文件

我正在尝试使用以下脚本将文件从网络位置复制到本地计算机,但它给了我一条错误消息

不支持 unc 路径


剧本

SET DESTINATION=c:\temp\new
SET DATE_FROM=02/13/2019
SET DATE_TO=02/13/2019

> nul forfiles /P \\sdpw9123app\work\ActiveMQ\logfile /S /D +%DATE_FROM% /C "cmd /C if @isdir==FALSE 2> nul forfiles /M  @file /D -%DATE_TO% && > con ( echo @path && copy /V @path %DESTINATION% )"

pause

我也尝试使用一些 Robocopy 命令,但也无法让它工作,但理想情况下,我想使用该forfiles命令来执行复制操作。

答案1

问题似乎在于使用forfiles命令,并且不支持 UNC 路径。您可以使用pushd为您映射 UNC 路径,然后只需使用映射后的其余路径即可,\\servername\sharename其中包含您需要针对其运行命令的文件夹。使用popd命令断开使用该pushd命令创建的任何临时映射驱动器。

脚本

SET DESTINATION=c:\temp\new
SET DATE_FROM=02/13/2019
SET DATE_TO=02/13/2019

PUSHD \\sdpw9123app\work
> nul forfiles /P \ActiveMQ\logfile /S /D +%DATE_FROM% /C "cmd /C if @isdir==FALSE 2> nul forfiles /M  @file /D -%DATE_TO% && > con ( echo @path && copy /V @path %DESTINATION% )"
POPD

pause

澄清

  • 而不是使用forfiles /P \\sdpw9123app\work\ActiveMQ\logfile

    • 在命令PUSHD \\sdpw9123app\work前使用forfiles
    • 运行forfiles命令行forfiles /P \ActiveMQ\logfile
    • 在命令POPD后面的行上使用forfiles

更多资源

  • PUSHD

    UNC 网络路径

    指定 UNC 路径后,PUSHD将创建一个临时驱动器映射,然后使用该新驱动器。临时驱动器号按字母逆序分配,因此如果Z:有空闲,将首先使用它。

  • POPD

    POPD还将删除由以下程序创建的所有临时驱动器映射PUSHD

答案2

%在批处理文件中,引用变量时 需要使用两次,即%%DATE_TO%%,而在命令行中只需执行一次。尝试修复该问题,然后查看将其粘贴到 cmd 中时上述内容是否有效。

相关内容