it-swarm.com.ru

Как запустить пакетный файл из общего сетевого ресурса без сообщения "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

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

68
Stew

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

121
dbenham

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

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

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

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

Примечание: В Windows 10 версии 1803 настройка, по-видимому, находится в HKLM: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

22
Vinzz

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

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

Заметки:

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

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

16
Grallen

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

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

9
aphoria

Мне нужно было иметь возможность просто просматривать 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
7
JayRO-GreyBeard

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

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

3
jameslr

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

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

1
Kai

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

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

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

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

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

1
James

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

Windows Registry Editor Version 5.00

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