Как запустить пакетный файл из общего сетевого ресурса без сообщения «UNC-путь не поддерживается»? - PullRequest
72 голосов
/ 26 января 2012

Я пытаюсь запустить командный файл из общей сетевой папки, но получаю следующее сообщение: «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

Кроме того, как удалить символическую ссылкупосле завершения установки?

Ответы [ 9 ]

124 голосов
/ 26 января 2012

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 /? из командной строки для получения дополнительной информации.

23 голосов
/ 11 января 2013

Существует параметр реестра , чтобы избежать проверки безопасности (используйте его на свой страх и риск):

Под путем реестра

HKEY_CURRENT_USER\Программного обеспечения\ Microsoft\ Командный процессор

добавить значение DisableUNCCheck REG_DWORD и установить значение 0 x 1 (шестнадцатеричное).

Примечание: В Windows 10 версии 1803 настройка кажетсянаходиться в разделе HKLM: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Командный процессор

20 голосов
/ 09 декабря 2015

Я чувствую, cls - лучший ответ.Он скрывает сообщение UNC прежде, чем кто-либо сможет его увидеть.Я скомбинировал его с @pushd %~dp0 сразу после этого, чтобы было похоже на открытие сценария и сопоставление местоположения за один шаг, что исключает дальнейшие проблемы с UNC.

cls
@pushd %~dp0
:::::::::::::::::::
:: your script code here
:::::::::::::::::::
@popd

Примечания:

pushd изменит рабочий каталог на расположение сценариев на новом подключенном диске.

popd в конце, чтобы очистить подключенный диск.

11 голосов
/ 26 января 2012

По сути, вы не можете запустить его с пути UNC, не увидев это сообщение.

Обычно я просто помещаю CLS в верхнюю часть скрипта, чтобы мне не приходилось видеть это сообщение. Затем укажите полный путь к файлам в сетевой папке, которые вам нужно использовать.

8 голосов
/ 25 октября 2014

Мне нужно было иметь возможность просто просматривать Windows Explorer через общий ресурс сервера, а затем дважды щелкнуть по запуску командного файла. @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
4 голосов
/ 26 января 2012

Вместо запуска пакета непосредственно из проводника - создайте ярлык для пакета и задайте начальный каталог в свойствах ярлыка для локального пути, например% TEMP% или чего-то еще.

Чтобы удалить символическую ссылку, используйте команду rmdir.

2 голосов
/ 28 декабря 2013

Моя ситуация немного отличается.При запуске я запускаю командный файл для распространения последней версии внутренних бизнес-приложений.

В этой ситуации я использую ключ запуска реестра Windows со следующей строкой

cmd /c copy \\serverName\SharedFolder\startup7.bat %USERPROFILE% & %USERPROFILE%\startup7.bat

При запуске запускаются две команды в правильной последовательности.Сначала скопируйте пакетный файл локально в каталог, к которому у пользователя есть разрешение.Затем выполнить тот же пакетный файл.Я могу создать локальный каталог c: \ InternalApps и скопировать все файлы из сети.

Вероятно, уже слишком поздно, чтобы решить вопрос оригинального плаката, но это может помочь кому-то еще.

2 голосов
/ 22 октября 2013

Я недавно столкнулся с той же проблемой, работая с командным файлом на сетевом общем диске в Windows 7.

Еще один способ, который мне помог, состоял в том, чтобы подключить сервер к диску через Windows Explorer: Инструменты -> Подключить сетевой диск. Дайте ему букву диска и путь к папке \ yourserver. Поскольку я работаю с общим сетевым ресурсом, его часто сопоставляют, что делает его более удобным и устраняет ошибку «UNC-путь не поддерживается».

1 голос
/ 31 октября 2018

Это RegKey, который я использовал:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001
...