
Я пытаюсь создать пакетный скрипт, который откроет программу в другой среде (чтобы я мог создать ее переносимую версию).
Я использую это, set APPDATA=%CD%\data
чтобы сказать ему сделать это. Проблема, с которой я сталкиваюсь, заключается в том, что я получаю следующую ошибку при запуске партии:
CMD.EXE was started with the above path as the current directory. UNC paths are not supported. Defaulting to Windows directory.
Я хочу вместо этого использовать cd
команду, чтобы изменить его на пакетный каталог. Есть ли простой способ сделать это?
решение1
Если он находится на сетевом диске, у вас все равно могут возникнуть проблемы, пока вы не подключите диск. Но почему бы не сделать следующее?
APPDATA=%~dp0
cd /d %APPDATA%
Выполнив cls, вы также можете очистить ошибку, но если скрипт запущен из UNC-пути, вы получите эту ошибку, вам просто придется сопоставить ее или CLS устранить ошибку.
решение2
Попробуйте добавить это в пакет:
pushd "%~p0" 2> nul
pushd "\\%~p0" 2> nul
Если запустить из папки UNC, то первая строка не будет работать, но вторая будет работать.
Если запустить из папки, подключенной к диску, вторая строка не будет работать, но первая будет работать.
В любом случае текущей папкой будет папка, в которой находится пакетный файл, и оттуда вы сможете менять папки.
Позже вы сможете использовать его cd
для отображения папки, с которой вы работаете.