由guid定位的批量复制文件夹

时间:2017-01-06 06:12:34

标签: batch-file cmd xcopy robocopy unc

在批处理文件中,我是否可以复制位于常量路径下的文件夹,例如\\?\ Volume { GUID }?

将目录及其内容从本地可移动驱动器(例如usb外置驱动器)复制(复制,xcopy或robocopy)到同一驱动器上的另一个位置时,我想使用唯一且恒定的绝对值路径如\\?\ Volume {GUID}以避免使用可能随时间变化的驱动器号。 为了操作副本,批处理文件应放在可移动设备上,但是如果文件被移动或放置在其他地方,我宁愿确保它在好的驱动器上运行。

到目前为止,我已尝试过:

  • COPY可以处理\\?\ Volume { GUID }路径以复制文件但无法复制 文件夹
  • XCOPY返回"无效的驱动器"错误
  • ROBOCOPY提供未找到的"网络路径,等待30秒......"
  • 对于上面的每个命令:语法变体与\\?\ UNC \ Volume { guid }以及尾随" \"

我做错了什么,或者这不是那样做的?

是否有其他方法可以使用不变位置?

理想情况下,它应该包含尽可能少的调整。通过调整我的意思是:标记驱动器或给它一个固定的字母等。

2 个答案:

答案 0 :(得分:0)

查看pushd /?popd /?

pushd \\?\UNC\Volume{guid}

将UNC路径短时间映射为网络驱动器,并根据计算机的下一个免费驱动器从字母表末尾将目录更改为该目录。

例如,您已Z:\Y:\已将路径映射到X:\并将当前目录更改为X:\

从那以后你可以去copy filefromServer.foo C:\localfile.bar

XCopy等其他命令也可以使用映射驱动器。

要取消映射驱动器,请使用popd

答案 1 :(得分:0)

复制功能都不能与unc路径一起使用。 因此,唯一的方法是一种解决方法,包括通过wmic命令检索驱动器号。 这是代码:

for /F "usebackq tokens=1,2 delims==" %%G in (` wmic volume where "DeviceID='%_volID:\=\\%'" get DriveLetter /value `) do set _%%G=%%H

_volID是包含相关卷的unc路径的变量