1

У меня есть пакетный файл, расположенный в нескольких папках, и в этом файле мне нужно заменить старый subst T: . Команда для net use потому что устройства (диски) имеют разные свойства в Windows 7.

Тем не менее, я только обнаружил, что net use только абсолютные пути, такие как:

net use T: \\path\to\folder

Я не могу работать с абсолютными путями, но net use T: . не допускается (выдает ошибку).

Есть ли способ выполнить команду net use из папки, чтобы она использовала текущий каталог .bat?

Я думаю, что лучшим решением для меня было бы иметь возможность получить полный путь (\path\to\folder) с помощью пакетной команды. (переменные% cd% и chdir в этом случае не работают). Вопросы о получении текущего каталога или имени папки бесполезны, так как команда net use не позволяет использовать пути, такие как x:\path\to\folder

1 ответ1

1

%~dp0 даст именно то, что вы просите (т.е. \\server\share\to\folder). Но вы не можете использовать его для своей команды net use . Команда net use принимает только часть \\server\share для создания буквы диска.

Вы можете проделать некоторую работу, чтобы удалить \to\folder -part и добавить его позже в свои пакетные файлы, но может быть лучше использовать команду pushd \\server\share\to\folder . С помощью этой команды создается временная буква драйвера, и текущий каталог автоматически изменяется на правильную папку. С помощью popd popd вы вернетесь к тому, с чего начали, и освободите временный диск.

Так:

C:\>

C:\>pushd \\wdmycloud\public\new folder

Z:\New folder>::do your thing
Z:\New folder>
Z:\New folder>popd

C:\>

Кстати, если вам нужно выяснить, какой временный диск создан, вы можете использовать %~d0 в ваших пакетных файлах. И %~dp0 для полного пути и т.д. (Или %cd% конечно :)).

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