Команда Net Use с относительным целевым путем

У меня есть пакетный файл, расположенный в нескольких папках, и в этом файле мне нужно заменить старый 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 ответ

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

Вы можете сделать некоторую работу, чтобы снять \to\folder-part и добавьте его позже в ваши пакетные файлы, но может быть лучше использовать pushd \\server\share\to\folder команда. С помощью этой команды создается временная буква драйвера, и текущий каталог автоматически изменяется на правильную папку. С 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% конечно:)).

Другие вопросы по тегам