guid 定位的批量复制文件夹
batch copy folder located by guid
在批处理文件中,我可以复制位于固定路径的文件夹,如 \\?\Volume{GUID}?
将目录及其内容从本地可移动驱动器(例如 USB 外部驱动器)复制(复制、xcopy 或 robocopy)到同一驱动器上的另一个位置时,我想使用唯一且恒定的绝对值\\?\Volume{GUID} 之类的路径,以避免使用会随时间变化的驱动器号。
要操作副本,批处理文件应放置在可移动设备上,但如果文件被移动或放置在其他地方,我宁愿确保它在良好的驱动器上运行。
到目前为止我已经尝试过:
- COPY 可以处理 \\?\Volume{GUID} 路径来复制文件但不能复制
文件夹
- XCOPY returns 一个 "invalid drive" 错误
- ROBOCOPY 给出一个 "network path not found, wait 30 sec..."
- 对于上面的每个命令:带有 \\?\UNC\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 路径的变量
在批处理文件中,我可以复制位于固定路径的文件夹,如 \\?\Volume{GUID}?
将目录及其内容从本地可移动驱动器(例如 USB 外部驱动器)复制(复制、xcopy 或 robocopy)到同一驱动器上的另一个位置时,我想使用唯一且恒定的绝对值\\?\Volume{GUID} 之类的路径,以避免使用会随时间变化的驱动器号。 要操作副本,批处理文件应放置在可移动设备上,但如果文件被移动或放置在其他地方,我宁愿确保它在良好的驱动器上运行。
到目前为止我已经尝试过:
- COPY 可以处理 \\?\Volume{GUID} 路径来复制文件但不能复制 文件夹
- XCOPY returns 一个 "invalid drive" 错误
- ROBOCOPY 给出一个 "network path not found, wait 30 sec..."
- 对于上面的每个命令:带有 \\?\UNC\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 路径的变量