Я пытаюсь создать пакетный скрипт, который откроет программу в другой среде (чтобы я мог сделать ее переносимой версией).

Я использую этот 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 чтобы изменить ее на каталог batch. Есть простой способ сделать это?

2 ответа2

2

Попробуйте поместить это в пакет:

pushd "%~p0" 2> nul
pushd "\\%~p0" 2> nul

Если запустить из папки UNC, первая строка не будет работать, но вторая будет работать.

Если запустить из сопоставленной папки диска, вторая строка не удастся, но первая будет работать.

В любом случае, текущая папка будет находиться там, где находится пакетный файл, и вы можете менять папки оттуда.

Позже вы можете использовать cd чтобы показать, из какой папки вы работаете.

1

Если он подключен к сетевому диску, у вас могут возникнуть проблемы, если вы не подключите его, почему бы не сделать следующее?

APPDATA=%~dp0
cd /d %APPDATA%

Делая cls, вы также можете удалить ошибку, но если скрипт запускается с UNC-пути, по которому вы получите эту ошибку, вам просто нужно сопоставить ее или CLS-ошибку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .