unc 目录不受支持_DOS批处理不支持将UNC 路径作为当前目录的巧妙解决方案

在DOS批处理中,由于不支持直接操作UNC路径,可以通过使用`pushd`和`popd`命令来映射和断开UNC路径,实现对UNC目录的操作。在批处理中,可以利用`%~dp0`变量引用批处理所在目录,方便执行相关命令。需要注意UNC路径通常为只读,执行写入操作时避免使用UNC路径。
摘要由CSDN通过智能技术生成

DOS批处理不支持将UNC 路径作为当前目录的巧妙解决方案

在有些时候,需要在批处理中操作UNC目录,但批处理并不能直接对UNC目录进行操作,怎么办?

废话少说,直接上代码,打开网上邻居→整个网络→Microsofi Windows Network→在工作组找到本机对应的电脑,双击测试以下批处理代码:

显示当前目录.bat

cd /d %~dp0

echo %cd%

pushd %~dp0

echo %cd%

popd

pause

可以看到,在开始使用cd命令跳转到UNC目录时,会出现"CMD 不支持将 UNC 路径作为当前目录。"的提示,即cd命令只能在本地目录跳转,却不能跳转到UNC目录。

那如何是好?看第二个命令:pushd,使用"pushd %~dp0"可以将UNC路径映射成本地的Z盘,执行该命令后,下一个提示符就不是原来的C:\>,而是Z:\>,即已经映射成功的UNC路径。

这时,就可以像操作本地目录一样操作UNC目录了(实际上在“我的电脑”中会出现一个Z盘的映射,相当于本地硬盘)。如图中所示,cd、dir等命令均可以使用。

最后,在执行完操作后,别忘了使用popd将映射断开。断开后,提示符又变成了原来的C:\Windows>。

另外一个更好的解决办法:直接在批处理所在的目录前面加上变量%~dp0即可。无论是调用批处理名字,还是拷贝,都可以。

但是要注意,一般地文件共享是只读共享,UNC目录不可写,因此echo >file1.txt这样的语句,fiel1.txt前面不要加%~dp0,默认用C:\windows目录即可。

@echo off

%~dp0bootice\BOOTICEx86 /DEVICE=0 /mbr /install /type=GRUB4DOS /v045 /boot_file=grldr /quiet

echo n|copy /-y %~dp0grub\grldr.* %systemdrive%\

echo n|copy /-y %~dp0grub\menu.lst %systemdrive%\

attrib +h %systemdrive%\grldr.*

attrib +h %systemdrive%\menu.lst

ECHO ┌─────────────────────────────────┐

ECHO │已经把grub4dos写入硬盘MBR! 按任意键退出。 │

ECHO └─────────────────────────────────┘

pause >nul

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值