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

Jit*_*pta 3 windows batch

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

不支持 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
Run Code Online (Sandbox Code Playgroud)

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

Vom*_*yle 5

问题似乎与使用该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
Run Code Online (Sandbox Code Playgroud)

澄清

  • 而不是使用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