我正在尝试使用以下脚本将文件从网络位置复制到本地计算机,但它给了我一条错误消息:
不支持 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命令来执行复制操作。
问题似乎与使用该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
UNC 网络路径
指定 UNC 路径后,
PUSHD将创建临时驱动器映射,然后使用该新驱动器。临时驱动器号按相反的字母顺序分配,因此如果Z:有空闲,将首先使用它。
POPD还将删除由创建的任何临时驱动器映射PUSHD