มันค่อนข้างเป็นคำถามเก่า แต่ .. ฉันกำลังมองหาคำตอบที่แน่นอนเหมือนกันขณะที่ฉันพยายามที่จะสร้างชุดที่จะใช้เส้นทาง 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 ด้วย "โทเค็น = 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