Увидеть такое сообщение можно при попытке запуска bat или cmd файла с сетевого ресурса. Всё дело в том, что CMD.EXE проверяет, используется ли имя UNC для текущего каталога и считается, что имя UNC может вызвать проблемы с дочерними процессами, запущенными с этой же консоли при выходе из консоли или остановке (об этом написано на сайте Microsoft). UNC (Universal Naming Convention) - это соглашение об именовании файлов и других ресурсов, дающее машинонезависимое определение местоположения ресурса, т.е. описание пути к файлу или папке с полным указанием имени сервера и имени сетевого ресурса.
Для того, чтобы запретить CMD.EXE проверять UNC имена и запускать скрипт без вопросов, нужно сделать следующее:
Способ 1. Запретить проверять путь UNC через редактор реестра.
Запустить regedit.exe (нажать "Пуск", в поле "Найти программы и файлы" написать "regedit.exe").
Открыть ветку реестра: HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor
Создать параметр типа DWORD (число) с наименованием DisableUNCCheck и установить его значение равное 1.
Возможные значения этого параметра:
- 0 - выводить предупреждающее сообщение и устанавливать текущий путь равный системной папке Windows.
- 1 - не выводить предупреждающее сообщение и пытаться выставить текущий путь равный UNC пути.
Способ 2. Выполнить команду, создающую параметр DisableUNCCheck
Нажать "Пуск" -> "Выполнить" или запустить "Командную строку" и выполнить команду:
reg add "HKCU\Software\Microsoft\Command Processor" /v DisableUNCCheck /t REG_DWORD /d 1
После выполнения этой команды создастся параметр как и в способе 1-м.
Теперь можно запускать bat или cmd скрипты из сетевого пути.
Способ 3. Подключить сетевой путь как сетевой диск
Для этого можно использовать такой код bat-файла с автоматическим подбором первой свободной буквы для сетевого диска:
set netdisk= for %%x IN (D E F G H I J K L M N O P Q R S T U V W X Y Z) DO ( net use %%x: <Путь_к_сетевой_папке> /persistent:no && set netdisk=%%x if not "!netdisk!"=="" goto next ) :next %netdisk%: ... dir ... net use %netdisk%: /d
<Путь_к_сетевой_папке> нужно поменять на свой путь с указанием имени компьютера и сетевого ресурса.
После подключения сетевого диска я написал команду dir, чтобы убедиться, что путь поменялся, а вам нужно написать свои команды, которые будут выполняться для сетевого ресурса. После выполнения всех нужных действий, сетевой диск отключается командой net use %netdisk%: /d
Комментарии к статье:
Очень помогло.
PUSHD and POPD should help in your case.
https://stackoverflow.com/questions/9013941/how-to-run-batch-file-from-network-share-without-unc-path-are-not-supported-me
Добавить комментарий: