我尝试在网络共享上启动BAT文件,但出现此错误:
'\devapplets'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported. Defaulting to Windows directory.
有解决方法吗?
谢谢!
是否有机会先挂载网络共享?
net use \devapplets z:
z:mybatchfile.bat
您可以让命令行处理器在批处理脚本启动时自动将 UNC 路径映射到驱动器:
pushd %~dp0
echo %CD%
popd
当 popd 命令执行或脚本结束时,驱动器将自动取消映射。
唯一的缺点是,当脚本运行时,您仍然会收到错误消息。
我遇到了同样的问题..虽然脚本运行良好,但CMD.EXE标头很烦人。
为了抑制该文本,我只需调用 CLS 作为脚本的第一行。
这将删除讨厌的CMD.EXE标题,然后显示您想要的任何内容。
希望这有帮助。
如果你想不使用驱动器映射,你可以使用Microsoft KB的注册表破解。
HKEY_CURRENT_USER
Software
Microsoft
Command Processor
将值DisableUNCCheck
REG_DWORD
并将值设置为 0 x 1
(十六进制)。
警告:如果启用此功能并启动具有 UNC 名称当前目录的控制台,从该控制台启动应用程序,然后关闭控制台,则可能会导致从该控制台启动的应用程序出现问题。
您可以创建映射的网络驱动器。假设您使用的是 Windows XP,则过程为:
在 Windows 资源管理器窗口中,
- 单击"
Tools
" - 单击
Map Network Drive
- 选择驱动器号和文件夹(例如
X:
和\devapplets
) - 单击"
Finish
您现在只需输入
x:
cd applets
在命令提示符下并运行批处理文件。
或者
您还可以使用 NET USE 命令映射网络驱动器。
NET USE X: \devapplets
x:
您可以测试 ERRORLEVEL 以查看命令是否成功完成。多亏了这段精彩的代码,我可以建议这个解决方案:
@echo off
set alpha=zyxwvutsrqponmlkjihg
SET completed=false
FOR /L %%i in (1,1,23) DO CALL :MAPDRIVE
:MAPDRIVE
set drive=%alpha:~0,1%
set alpha=%alpha:~1,23%
IF NOT %completed%==true (
ECHO Attempting to mount drive as %drive%
NET USE %drive%: \devapplets
)
IF %ERRORLEVEL% EQU 0 SET completed=true
GOTO END
:END