如何在没有“UNC路径不支持”消息的情况下从网络共享运行批处理文件?

时间:2012-01-26 04:27:41

标签: windows batch-file unc

我正在尝试从网络共享运行批处理文件,但我不断收到以下消息:“不支持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

另外,如何在安装完成后删除符号链接?

12 个答案:

答案 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)

编辑Windows注册表不值得,也不安全,请使用Map network drive并加载网络共享,就像从本地驱动器之一加载网络共享一样。

enter image description here