Це досить давнє запитання, але .. Я шукав точно таку ж відповідь, коли я намагався створити пакет, який буде використовувати шлях 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% зберігає поточний шлях і вам потрібна лише літера диска, тому ви шукаєте його лише за допомогою команди FIND у 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.