我正在尝试从网络共享运行批处理文件,但我不断收到以下消息:“不支持UNC路径。默认为Windows目录。”批处理文件位于\\Server\Soft\WPX5\install.bat
。以管理员身份登录后,从我的Windows 7桌面导航到\\Server\Soft\WP15\
并双击install.bat,即当我收到“不支持UNC路径”时。信息。我在网上发现了一些建议说映射驱动器不起作用,但使用符号链接将解决这个问题,但符号链接对我不起作用。以下是我的批处理文件内容,我将不胜感激,可以帮助我完成我想要做的任何帮助。基本上,我希望能够从\\Server\Soft\WP15\install.bat
运行批处理文件。
批处理文件内容
mklink /d %userprofile%\Desktop\WP15 \\server\soft\WP15
\\server\soft\WP15\setup.exe
robocopy.exe "\\server\soft\WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s \\server\soft\WPX5\Custom\Migrate.reg
另外,如何在安装完成后删除符号链接?
答案 0 :(得分:123)
PUSHD和POPD应该对您的情况有帮助。
@echo off
:: Create a temporary drive letter mapped to your UNC root location
:: and effectively CD to that location
pushd \\server\soft
:: Do your work
WP15\setup.exe
robocopy.exe "WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s WPX5\Custom\Migrate.reg
:: Remove the temporary drive letter and return to your original location
popd
从命令行键入PUSHD /?
以获取更多信息。
答案 1 :(得分:23)
有一个registry setting可以避免这种安全检查(尽管风险也是如此):
在注册表路径下
HKEY_CURRENT_USER
\软件
\微软
\ Command Processor
添加值DisableUNCCheck REG_DWORD并将值设置为0 x 1 (十六进制)。
注意:强> 在Windows 10版本1803上,该设置似乎位于HKLM下: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor
答案 2 :(得分:19)
我觉得cls
是最好的答案。它在任何人都可以看到它之前隐藏了UNC消息。我之后将其与@pushd %~dp0
结合起来,以便打开脚本并一步映射位置,从而防止进一步的UNC问题。
cls
@pushd %~dp0
:::::::::::::::::::
:: your script code here
:::::::::::::::::::
@popd
注意:
pushd
会将您的工作目录更改为新映射驱动器中的脚本位置。
popd
最后,清理映射的驱动器。
答案 3 :(得分:11)
基本上,如果没有看到该消息,就无法从UNC路径运行它。
我通常只是在脚本顶部放置一个CLS
,所以我不必看到该消息。然后,指定您需要使用的网络共享中文件的完整路径。
答案 4 :(得分:8)
我需要能够只通过Windows资源管理器浏览服务器共享,然后双击启动批处理文件。 @dbenham让我为我的场景提供了一个更简单的解决方案(没有popd
担忧):
:: Capture UNC or mapped-drive path script was launched from
set NetPath=%~dp0
:: Assumes that setup.exe is in the same UNC path
%NetPath%setup.exe
:: Note that NetPath has a trailing backslash ("\")
robocopy.exe "%NetPath%Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s %NetPath%..\WPX5\Custom\Migrate.reg
:: I am not sure if WPX5 was typo, so use ".." for parent directory
set NetPath=
pause
答案 5 :(得分:4)
不是直接从资源管理器启动批处理 - 而是创建批处理的快捷方式,并将快捷方式属性中的起始目录设置为%TEMP%等本地路径。
要删除符号链接,请使用rmdir命令。
答案 6 :(得分:2)
我最近在Windows 7的网络共享驱动器上使用批处理文件遇到了同样的问题。
另一种对我有用的方法是通过Windows资源管理器将服务器映射到驱动器:工具 - >映射网络驱动器。为\ yourserver提供驱动器号和文件夹路径。由于我使用网络共享经常映射到它使它更方便,它解决了“不支持UNC路径”错误。
答案 7 :(得分:2)
我的情况略有不同。我在启动时运行批处理文件以分发最新版本的内部业务应用程序。
在这种情况下,我使用带有以下字符串的Windows注册表运行密钥
cmd /c copy \\serverName\SharedFolder\startup7.bat %USERPROFILE% & %USERPROFILE%\startup7.bat
这将以正确的顺序在启动时运行两个命令。首先将批处理文件本地复制到用户有权访问的目录。然后执行相同的批处理文件。我可以创建一个本地目录c:\ InternalApps并复制网络中的所有文件。
解决原始海报的问题可能为时已晚,但可能有助于其他人。
答案 8 :(得分:1)
这是我使用的RegKey:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001
答案 9 :(得分:0)
我的env Windows10 2019 lts版本,我添加了这两个binray数据,修复了此错误
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
禁用UNCCheck值1
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Command Processor
禁用UNCCheck值1
答案 10 :(得分:0)
这是一个非常老的线程,但是我仍然使用Windows7。:-)
有一点似乎没有人考虑到,这可能也会对Windows 10用户有所帮助。
如果启用了命令扩展名,则PUSHD命令除了接受正常的驱动器号和路径之外,还将接受网络路径。
因此,最明显的方法-最简单-如果您打算使用PUSHD,则可能是在批处理脚本中启用命令扩展。至少,这应该可以减少使用PUSHD和网络路径时可能遇到的问题。
答案 11 :(得分:-1)