在 Windows CMD 中挂载网络路径 UNC 至本地盘符主要有两个办法,主流的是使用 pushd
进行挂载,但这个办法有个致命的缺点。
主流方法 pushd
set unc_path=\\Host\a\b\c
pushd
:: insert your code here
popd
但使用此方法时,pushd
会将 \\Host\a
挂载至可用盘符(假设为 Y:
),并将工作目录更改至 Y:\b\c
。但是这个方法致命的缺点为:当用户有 \\Host\a\b\c
的权限却没有 \\Host\a
的权限时,所有在此目录下的命令都会报错 Access is denied
另一种方法 net use
set unc_path=\\Host\a\b\c
:: mount unc_path to available drive
net use * %unc_path%
:: get the drive letter and set variable drive_letter
for /f "tokens=2,3" %%i in ('net use') do if '%%j=='%unc_path% set drive_letter==%%i
:: switch to drive directory
%drive_letter%
:: insert your code here
:: unmount drive
net use %drive_letter% /delete /y
此命令首选查找可用盘符进行挂载,然后获取挂载盘符的位置。与 pushd
主要的不同是 net use
挂载子目录而不是根目录,因此不会遇到之前所说的权限问题。
注意:当在命令行中运行时 %%i
, %%j
需要改成 %i
, %j