Ini pertanyaan yang cukup lama tapi .. Saya mencari jawaban yang sama persis ketika saya mencoba membuat batch yang akan menggunakan jalur UNC ke lokasi tambalan yang sebenarnya dan melakukan beberapa hal di sana (jadi hanya salin & tempel ke lokasi lain / folder dan mulai lagi).
Karena saya tidak dapat menemukan jawaban, saya sendiri menemukan solusinya, tetapi itu tidak terlalu indah dan tentu saja bukan perintah yang sederhana. Tetapi dimungkinkan untuk diterapkan dalam batch. Pada CMD akan menjadi:
FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%
Anda dapat menyalin empat baris (lebih baik 4 + baris kosong) dan menempelkannya ke CMD untuk mendapatkan gema imidiate dari path untuk menyalinnya.
Dalam batch Anda akan menggunakannya sedikit berbeda:
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0
Variabel% CD% menyimpan path saat ini dan Anda hanya perlu huruf drive sehingga Anda hanya mencarinya dengan perintah FIND di NET USE. Dengan "token = 2" (atau 3, tergantung pada output NET USE) variabel% i menyimpan path ke huruf drive yang Anda cari. Setelah itu, perintah SET kedua menambahkan folder yang Anda telusuri di drive jaringan dengan% CD: ~ 2% (offset 2 untuk memotong huruf drive).
Untuk batch Anda menggunakan variabel% ~ d0 atau% ~ p0. % 0 menyimpan path lengkap dari batch itu sendiri (misalnya Z: \ temp \ test.bat;% ~ d0 = Z:;% ~ p0 = \ temp \; d = drive, p = path, f = path penuh, n = nama) kalau tidak mirip dengan perintah CMD.