Это довольно старый вопрос, но .. Я искал точно такой же ответ, когда пытался создать пакет, который будет использовать UNC-путь к фактическому местоположению патча и делать там какие-то действия (поэтому нужно только скопировать и вставить в другое местоположение / папку и начать заново).
Поскольку я не мог найти ответ, я сам нашел решение, но оно не очень красиво и, конечно, не простая команда. Но это возможно реализовать в пакетном режиме. На CMD это будет:
FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%
Вы можете скопировать четыре строки (лучше 4+ пустую строку) и вставить их в CMD, чтобы получить непосредственное эхо-путь пути для его копирования.
В пакетном режиме вы бы использовали его немного по-другому:
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0
Переменная% CD% хранит текущий путь, и вам нужна только буква диска, поэтому вы можете искать ее только с помощью команды НАЙТИ в NET USE. С помощью "tokens = 2" (или 3, в зависимости от вывода NET USE) переменная% i сохраняет путь к искомой букве диска. После этого вторая команда SET добавляет папки, которые вы просматривали на сетевом диске, с% CD:~ 2% (смещение 2 для отключения буквы диска).
Для пакетной обработки вы используете переменные% ~ d0 или% ~ p0. % 0 хранит полный путь самого пакета (например, Z:\temp\test.bat; % ~ d0 = Z:; % ~ p0 = \temp\; d = диск, p = путь, f = полный путь, n = имя) в противном случае это похоже на команду CMD.