guid 定位的批量复制文件夹

batch copy folder located by guid

在批处理文件中,我可以复制位于固定路径的文件夹,如 \\?\Volume{GUID}?

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

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

我是不是做错了什么,或者这不是做错的方法?

是否有另一种使用不变位置的方法?

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

看看pushd /?popd /?

pushd \?\UNC\Volume{guid}

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

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

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

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

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

None 的复制功能可以与 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 路径的变量