【发布时间】:2016-07-30 11:25:18
【问题描述】:
批处理文件的目的是遍历一个目录,将所有修改日期在 x 和 y 之间的文件移动到一个临时目录(位于存档文件夹中),从临时目录创建一个 .zip,然后最后删除临时目录。
我正在从一批中调用一批。初始批次使用 pushd 检索网络路径,但是当调用下一个批次并使用 forfiles 将文件移动到存档中时,会引发 UNC 路径错误。 “错误:不支持 UNC 路径 (\machine\share)。”
这两个 .bat 文件在共享网络的同一目录中。
我已经阅读了这个类似问题的其他答案,但没有一个答案能解决我的问题。
第一个批处理文件:
@echo off
setlocal EnableExtensions
cls
@pushd %~dp0
:firststep
........
code....
........
echo Calling...
CALL ArchiveTool.bat %MM% %yyyy% \\riskview\EBSArchive
echo Press any key to process next directory...
pause >nul
到这里一切正常。
失败的批次:
@echo off
setlocal EnableExtensions
.......
Code...
.......
md %3\Archive\%1-%2
forfiles /P %3 /D +%1/1/%2 /C "cmd /c if /I @FDATE LSS %mm%/1/%2 move @file
%3\Archive\%1-%2 >NUL & echo|set /p=."
目录创建成功,但是forfiles失败。
【问题讨论】:
-
1) 我强烈建议您使用 Powershell 脚本而不是 .bat 文件来解决任何复杂问题。 2) 如果您必须使用 .bat 文件 - 如果 UNC 名称不起作用......那么一个简单的解决方法可能是将共享映射到驱动器号。
-
您可以为 .bat 设置完整的 UNC 路径,并在
call后面加上引号。对于网络共享路径,应将 %~dp0 替换为 %~p0。Pushd也不能用于 UNC 路径。
标签: batch-file cmd archive unc pushd