Я пытаюсь запустить пакетный файл из общего сетевого ресурса, но получаю следующее сообщение: «Путь 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
Кроме того, как удалить символическую ссылку после завершения установки?
источник
Ответы:
PUSHD и POPD должны помочь в вашем случае.
PUSHD /?
Для получения дополнительной информации введите в командной строке.источник
pushd %~dp0
Это должно заставить его сменить каталог на тот, который содержит ваш bat-файл. Он все равно распечатает предупреждение, но после этого должно работать как обычно. Если файл bat использует '% ~ dp0' в другом месте, у него могут быть проблемы с этим, в этом случае вы можете определить,%~dp0
начинается ли с '//' в начале файла bat, и если даpushd
, а затем запустить bat снова, тогдаgoto :EOF
. Это заставит его работать в новом сопоставленном каталоге.PUSHD
этого выполните 2-й скрипт черезCMD /C
, а затем нажмитеPOPD
. Управление вернется к родительскому сценарию после выхода изCMD /C
сценария, даже если он был прерван нажатием CTRL-C.Существует параметр реестра, позволяющий избежать этой проверки безопасности (однако используйте ее на свой страх и риск):
Примечание. В Windows 10 версии 1803 этот параметр находится в разделе HKLM: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor.
источник
Я считаю,
cls
что это лучший ответ. Он скрывает сообщение UNC до того, как его увидят. Я объединил его с@pushd %~dp0
последующим, чтобы казалось, будто скрипт открывается и отображается местоположение за один шаг, что предотвращает дальнейшие проблемы с UNC.Примечания:
pushd
изменит ваш рабочий каталог на место сценария на новом подключенном диске.popd
в конце, чтобы очистить подключенный диск.источник
popd
конец (Windows 7), иначе подключенные диски застряли после закрытия окна.По сути, вы не можете запустить его по пути UNC, не увидев этого сообщения.
Обычно я просто помещаю
CLS
в начало скрипта, чтобы не видеть это сообщение. Затем укажите полный путь к файлам в общей сетевой папке, которые вам нужно использовать.источник
Мне нужно было просто просмотреть в проводнике Windows общий ресурс сервера, а затем дважды щелкнуть запускать пакетный файл. @dbenham привел меня к более простому решению для моего сценария (без
popd
забот):источник
Вместо того, чтобы запускать пакет напрямую из проводника - создайте ярлык для пакета и установите начальный каталог в свойствах ярлыка на локальный путь, например% TEMP% или что-то в этом роде.
Чтобы удалить символическую ссылку, используйте команду rmdir.
источник
Недавно я столкнулся с той же проблемой, работая с пакетным файлом на сетевом диске в Windows 7.
Другой способ, который сработал для меня, заключался в том, чтобы подключить сервер к диску через проводник Windows: Инструменты -> Подключить сетевой диск. Укажите букву диска и путь к папке \ yourserver. Поскольку я работаю с общим сетевым ресурсом, его сопоставление с сетевым ресурсом часто делает его более удобным и устраняет ошибку «UNC-путь не поддерживается».
источник
Моя ситуация немного другая. Я запускаю командный файл при запуске для распространения последней версии внутренних бизнес-приложений.
В этой ситуации я использую ключ запуска реестра Windows со следующей строкой
Это запускает две команды при запуске в правильной последовательности. Сначала скопируйте пакетный файл локально в каталог, на который у пользователя есть разрешение. Затем выполняем тот же командный файл. Я могу создать локальный каталог c: \ InternalApps и скопировать все файлы из сети.
Вероятно, уже слишком поздно решать вопрос исходного плаката, но это может помочь кому-то другому.
источник
Это RegKey, который я использовал:
источник
Моя версия env windows10 2019 lts, и я добавляю эти два данных binray, исправьте эту ошибку
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
DisableUNCCheck значение 1Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Command Processor
DisableUNCCheck значение 1источник
Это очень старый поток, но я все еще использую Windows 7. :-)
Есть один момент, который, похоже, никто не принял во внимание, что, вероятно, также поможет пользователям Windows 10.
Если расширения команд включены, команда PUSHD принимает сетевые пути в дополнение к обычной букве диска и пути.
Таким образом, очевидным и самым простым ответом может быть включение расширений команд в пакетном сценарии, если вы собираетесь использовать PUSHD. По крайней мере, это должно уменьшить проблемы, которые могут возникнуть при использовании PUSHD с сетевым путем.
источник
Редактировать реестры Windows не стоит и небезопасно, используйте
Map network drive
и загружайте общий сетевой ресурс, как если бы он загружался с одного из ваших локальных дисков.источник