Đây là một câu hỏi khá cũ nhưng .. Tôi đang tìm kiếm câu trả lời chính xác giống như tôi đang cố gắng tạo một lô sẽ sử dụng đường dẫn UNC đến vị trí thực tế của bản vá và thực hiện một số điều ở đó (vì vậy chỉ sao chép và dán vào vị trí khác / thư mục và bắt đầu lại).
Khi tôi không thể tìm thấy câu trả lời, tôi đã tự mình tìm ra giải pháp, nhưng nó không hay lắm và chắc chắn không phải là một lệnh đơn giản. Nhưng nó có thể được thực hiện theo lô. Trên CMD nó sẽ là:
FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%
Bạn có thể sao chép bốn dòng (tốt hơn 4 + dòng trống) và dán chúng vào CMD để có được tiếng vang của đường dẫn để sao chép nó.
Trong đợt, bạn sẽ sử dụng nó một chút khác nhau:
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0
Biến% CD% lưu trữ đường dẫn hiện tại và bạn chỉ cần ký tự ổ đĩa để bạn chỉ tìm kiếm với lệnh FIND trong NET USE. Với "mã thông báo = 2" (hoặc 3, tùy thuộc vào đầu ra NET USE), biến% i lưu đường dẫn đến ký tự ổ đĩa bạn đã tìm kiếm. Sau đó, lệnh SET thứ hai thêm các thư mục bạn đã duyệt trên ổ đĩa mạng với% CD: ~ 2% (bù 2 để cắt ký tự ổ đĩa).
Đối với lô, bạn sử dụng biến% ~ d0 hoặc% ~ p0. % 0 lưu trữ đường dẫn đầy đủ của chính lô đó (ví dụ: Z: \ temp \ test.bat;% ~ d0 = Z :;% ~ p0 = \ temp \; d = drive, p = path, f = full path, n = name) nếu không thì nó tương tự như lệnh CMD.