Установка CMD CD в каталог, в котором был запущен пакет

3294
FreeSnow

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

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

0

2 ответа на вопрос

2
Glen Little

Try putting this in the batch:

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

If started from a UNC folder, the 1st line will fail, but the 2nd will work.

If started from a drive mapped folder, the 2nd line will fail, but the 1st will work.

Either way, the current folder will be where the batch file is sitting, and you can change folders from there.

Later, you can use cd to show which folder you are working from.

1
David Remy

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

APPDATA=%~dp0 cd /d %APPDATA% 

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