จะเรียกใช้ไฟล์แบตช์จากเครือข่ายแชร์โดยไม่มีข้อความ“ ไม่รองรับเส้นทาง UNC” ได้อย่างไร


88

ฉันกำลังพยายามเรียกใช้ไฟล์แบตช์จากการแชร์บนเครือข่าย แต่ได้รับข้อความต่อไปนี้: "ไม่รองรับเส้นทาง UNC ค่าเริ่มต้นเป็นไดเรกทอรี Windows" ไฟล์แบตช์อยู่บน\\Server\Soft\WPX5\install.bat. ในขณะที่เข้าสู่ระบบในฐานะผู้ดูแลระบบจากเดสก์ท็อป Windows 7 ของฉันฉันไปที่\\Server\Soft\WP15\และดับเบิลคลิกที่ install.bat นั่นคือตอนที่ฉันได้รับ "ไม่รองรับเส้นทาง UNC" ข้อความ. ฉันพบคำแนะนำบางอย่างทางออนไลน์ที่ระบุว่าไดรฟ์การแมปจะไม่ทำงาน แต่การใช้ลิงก์สัญลักษณ์จะช่วยแก้ปัญหานี้ได้ แต่ลิงก์สัญลักษณ์ใช้ไม่ได้สำหรับฉัน ด้านล่างนี้เป็นเนื้อหาไฟล์แบตช์ของฉันฉันขอขอบคุณสำหรับความช่วยเหลือใด ๆ ที่สามารถช่วยให้ฉันทำสิ่งที่ฉันพยายามทำสำเร็จ โดยทั่วไปฉันต้องการให้สามารถเรียกใช้ไฟล์แบตช์จากไฟล์\\Server\Soft\WP15\install.bat.

เนื้อหาไฟล์แบตช์

mklink /d %userprofile%\Desktop\WP15 \\server\soft\WP15
\\server\soft\WP15\setup.exe
robocopy.exe "\\server\soft\WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s \\server\soft\WPX5\Custom\Migrate.reg

นอกจากนี้ฉันจะลบลิงก์สัญลักษณ์หลังจากการติดตั้งเสร็จสิ้นได้อย่างไร


2
หลายปีต่อมา แต่อาจมีประโยชน์สำหรับคนอื่น: หลังจากสร้างลิงก์สัญลักษณ์แล้วทำไมคุณยังอ้างถึงเส้นทางเดิมต่อไป จุดของลิงก์สัญลักษณ์คือการให้เส้นทางท้องถิ่นที่คุณสามารถใช้แทนได้ เช่นอย่าพูดว่า "\\ server \ soft \ WP15 \ setup.exe" ให้พูดว่า "% userprofile% \ Desktop \ WP15 \ setup.exe
ToolmakerSteve

นี่คือคำถามของ ServerFault.com อย่างจริงจัง
Junchen Liu

คำตอบ:


137

PUSHD และ POPD ควรช่วยในกรณีของคุณ

@echo off
:: Create a temporary drive letter mapped to your UNC root location
:: and effectively CD to that location
pushd \\server\soft

:: Do your work
WP15\setup.exe
robocopy.exe "WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s WPX5\Custom\Migrate.reg

:: Remove the temporary drive letter and return to your original location
popd

พิมพ์PUSHD /?จากบรรทัดคำสั่งเพื่อดูข้อมูลเพิ่มเติม


2
ขอบคุณสำหรับการตอบกลับและคำแนะนำอย่างรวดเร็ว ฉันหวังว่าคำแนะนำของคุณจะใช้ได้ผล แต่น่าเสียดายที่ไม่ได้ผลสำหรับฉัน ฉันได้รับข้อความเดียวกัน: "... ไม่รองรับเส้นทาง UNC ค่าเริ่มต้นเป็นไดเรกทอรี Windows" ฉันยังมีกล่องโต้ตอบการควบคุมบัญชีผู้ใช้ให้คลิกใช่หรือไม่ใช่แม้ว่าฉันจะเรียกใช้ไฟล์ในขณะที่เข้าสู่ระบบในฐานะสมาชิกของกลุ่มผู้ดูแลระบบ
สตูว์

26
@Stew ที่จุดเริ่มต้นของไฟล์. bat ของคุณให้ใส่: pushd %~dp0ที่ควรจะได้รับเพื่อเปลี่ยนไดเร็กทอรีเป็นไฟล์ที่มีไฟล์ bat ของคุณ มันจะยังคงพิมพ์คำเตือนออกมา แต่มันควรจะทำงานตามปกติ หากไฟล์ bat ใช้ '% ~ dp0' ที่อื่นอาจมีปัญหาในกรณีนั้นคุณสามารถตรวจพบว่า%~dp0ขึ้นต้นด้วย "//" ที่จุดเริ่มต้นของไฟล์ bat หรือไม่และหากเป็นเช่นpushdนั้นจากนั้นเรียกใช้ goto :EOFไฟล์ค้างคาวอีกครั้งแล้ว สิ่งนี้จะทำให้รันใน dir ที่แมปใหม่
Grant Peters

cmd จะถูกเรียกใช้งานบนคอมพิวเตอร์ระยะไกลหรือในเครื่อง?
Dingxin Xu

@DingxinXu - รหัสระยะไกลจะทำงานในเครื่อง หากคุณต้องการที่จะเรียกใช้รหัสบนคอมพิวเตอร์ระยะไกลแล้วคุณต้องบางอย่างเช่นPsExec
dbenham

3
@balki - ใช่ใส่คำสั่งระยะไกลในสคริปต์อื่น หลังจากPUSHDรันสคริปต์ที่ 2 ผ่านและทำตามนั้นด้วยCMD /C POPDการควบคุมจะกลับไปที่สคริปต์หลักหลังจากที่CMD /Cสคริปต์ออกแม้ว่าจะถูกยกเลิกโดย CTRL-C ก็ตาม
dbenham

29

มีการตั้งค่ารีจิสทรีเพื่อหลีกเลี่ยงการตรวจสอบความปลอดภัยนี้ (ใช้โดยยอมรับความเสี่ยงเอง):

ภายใต้เส้นทางรีจิสทรี

   HKEY_CURRENT_USER
     \ Software
       \ Microsoft
         \ Command Processor

เพิ่มค่า DisableUNCC ตรวจสอบ REG_DWORD และตั้งค่าเป็น 0 x 1 (Hex)

หมายเหตุ: ใน Windows 10 เวอร์ชัน 1803 ดูเหมือนว่าการตั้งค่าจะอยู่ภายใต้ HKLM: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor


1
ไม่แน่ใจว่าทำไม แต่ฉันพบโฟลเดอร์ "Command Processor" ในเส้นทางต่อไปนี้: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor
aoh

ขอบคุณข้อมูลนี้มีประโยชน์ แต่ใน Windows 10 1803 มันคือ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor ตามที่ @aoh ชี้ไว้
Edwin Yip

ฉันจะอัปเดตคำตอบแล้ว ขอบคุณสำหรับความแม่นยำ
Vinzz

26

ฉันรู้สึกว่าclsเป็นคำตอบที่ดีที่สุด มันซ่อนข้อความ UNC ก่อนที่ใครจะเห็น ฉันรวมเข้ากับ@pushd %~dp0ทันทีเพื่อให้ดูเหมือนว่าจะเปิดสคริปต์และแมปตำแหน่งในขั้นตอนเดียวดังนั้นจึงป้องกันปัญหา UNC เพิ่มเติม

cls
@pushd %~dp0
:::::::::::::::::::
:: your script code here
:::::::::::::::::::
@popd

หมายเหตุ:

pushd จะเปลี่ยนไดเร็กทอรีการทำงานของคุณไปยังตำแหน่งสคริปต์ในไดรฟ์ที่แมปใหม่

popd ในตอนท้ายเพื่อทำความสะอาดไดรฟ์ที่แมป


4
ฉันต้องการpopdในตอนท้าย (Windows 7) มิฉะนั้นไดรฟ์ที่แมปติดอยู่รอบ ๆ หลังจากปิดหน้าต่าง
Patrick

1
ใช้งานได้ดี ขอขอบคุณ.
Jonas_Hess

1
ถ้าควรทำงานบน Windows 10 ยังคงเป็น "Command Prompt"
Grallen

11

โดยทั่วไปคุณไม่สามารถเรียกใช้จากเส้นทาง UNC โดยไม่เห็นข้อความนั้น

สิ่งที่ฉันมักจะทำคือใส่ไว้CLSที่ด้านบนของสคริปต์เพื่อที่ฉันจะได้ไม่ต้องเห็นข้อความ จากนั้นระบุเส้นทางแบบเต็มไปยังไฟล์ในเครือข่ายแชร์ที่คุณต้องใช้


1
ขอขอบคุณ. ฉันจะลองตัวเลือกนี้เป็นตัวเลือกสุดท้ายหากไม่มีวิธีอื่น
สตู

คำตอบของ @jameslr ใช้งานได้ แต่มันเป็นการทำงาน (พิมพ์) มากกว่าที่ฉันเต็มใจจะทำ ดังนั้นแค่ล้างหน้าจอเพื่อกำจัดข้อผิดพลาดก็เพียงพอแล้วสำหรับฉัน :)
คำพังเพย

8

ฉันจำเป็นต้องสามารถเพียงแค่ Windows Explorer เรียกดูเซิร์ฟเวอร์แชร์จากนั้นดับเบิลคลิกเพื่อเปิดไฟล์แบตช์ @dbenham นำฉันไปสู่ทางออกที่ง่ายขึ้นสำหรับสถานการณ์ของฉัน (โดยไม่ต้องpopdกังวล):

:: Capture UNC or mapped-drive path script was launched from
set NetPath=%~dp0

:: Assumes that setup.exe is in the same UNC path
%NetPath%setup.exe

:: Note that NetPath has a trailing backslash ("\")
robocopy.exe "%NetPath%Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s %NetPath%..\WPX5\Custom\Migrate.reg

:: I am not sure if WPX5 was typo, so use ".." for parent directory
set NetPath=
pause

@ peter-mortensen แก้ไขความคิดเห็นในสคริปต์ 4x เพื่อใช้ประโยชน์จากคำแรกหรือไม่ ควรค่าแก่การแก้ไขหรือไม่? ทำไมไม่ใส่จุดต่อท้ายเพื่อทำให้เป็นประโยค? เกี่ยวกับ: เนื่องจากเป็นเพียงความคิดเห็นฉันจึงไม่ตั้งใจใช้ตัวพิมพ์ใหญ่ในคำแรกในความคิดเห็นยกเว้นในการประเมินและตัวแปร (หรือการเน้น) เพื่อความเข้าใจที่ชัดเจนยิ่งขึ้น
JayRO-GreyBeard

4

แทนที่จะเรียกใช้ชุดงานโดยตรงจาก explorer ให้สร้างทางลัดไปยังชุดงานและตั้งค่าไดเรกทอรีเริ่มต้นในคุณสมบัติของทางลัดไปยังเส้นทางภายในเครื่องเช่น% TEMP% หรือบางอย่าง

หากต้องการลบลิงก์สัญลักษณ์ให้ใช้คำสั่ง rmdir


1
วิธีนี้จะใช้ได้ แต่ถ้าคุณต้องการเปิดจากทางลัดเท่านั้น จะไม่ช่วยหากคุณต้องการเรียกใช้จากบรรทัดคำสั่งหรือเรียกจากไฟล์แบตช์อื่น
คำพังเพย

2
หากคุณต้องการโทรจากแบทช์หรือบรรทัดคำสั่งอื่นคุณสามารถเรียกสิ่งนี้: start / d% TEMP% \\ Server \ Soft \ WP15 \ install.bat
jameslr

2

ฉันพบปัญหาเดียวกันเมื่อเร็ว ๆ นี้ที่ทำงานกับไฟล์แบตช์บนไดรฟ์แชร์เครือข่ายใน Windows 7

อีกวิธีหนึ่งที่ได้ผลสำหรับฉันคือการแมปเซิร์ฟเวอร์กับไดรฟ์ผ่าน Windows Explorer: Tools -> Map network drive ระบุอักษรระบุไดรฟ์และเส้นทางโฟลเดอร์ไปยัง \ yourserver เนื่องจากฉันทำงานกับเครือข่ายแชร์มักจะแมปไปที่มันทำให้สะดวกมากขึ้นและมันก็แก้ไขข้อผิดพลาด“ ไม่รองรับเส้นทาง UNC”


2

สถานการณ์ของฉันแตกต่างกันเพียงเล็กน้อย ฉันกำลังเรียกใช้ไฟล์แบตช์เมื่อเริ่มต้นเพื่อแจกจ่ายแอปพลิเคชันทางธุรกิจภายในเวอร์ชันล่าสุด

ในสถานการณ์นี้ฉันกำลังใช้ Windows Registry Run Key ด้วยสตริงต่อไปนี้

cmd /c copy \\serverName\SharedFolder\startup7.bat %USERPROFILE% & %USERPROFILE%\startup7.bat

การดำเนินการนี้จะรันคำสั่งสองคำสั่งเมื่อเริ่มต้นระบบตามลำดับที่ถูกต้อง ขั้นแรกให้คัดลอกไฟล์แบตช์ในเครื่องไปยังไดเร็กทอรีที่ผู้ใช้มีสิทธิ์ จากนั้นเรียกใช้ไฟล์แบตช์เดียวกัน ฉันสามารถสร้างโลคัลไดเร็กทอรี c: \ InternalApps และคัดลอกไฟล์ทั้งหมดจากเครือข่าย

อาจจะสายเกินไปที่จะไขคำถามของผู้โพสต์ต้นฉบับ แต่อาจช่วยคนอื่นได้



1

นี่เป็นกระทู้เก่ามาก แต่ฉันยังใช้ Windows 7 อยู่ :-)

มีจุดหนึ่งที่ดูเหมือนจะไม่มีใครคำนึงถึงซึ่งอาจช่วยผู้ใช้ Windows 10 ได้เช่นกัน

หากเปิดใช้งานส่วนขยายคำสั่งคำสั่ง PUSHD จะยอมรับเส้นทางเครือข่ายนอกเหนือจากอักษรระบุไดรฟ์และเส้นทางปกติ

ดังนั้นคำตอบที่ชัดเจนและง่ายที่สุดคือการเปิดใช้งานส่วนขยายคำสั่งในสคริปต์แบตช์หากคุณตั้งใจจะใช้ PUSHD อย่างน้อยที่สุดสิ่งนี้ควรจะลดปัญหาที่คุณอาจมีในการใช้ PUSHD ด้วยเส้นทางเครือข่าย


0

env windows10 2019 lts เวอร์ชันของฉันและฉันเพิ่มข้อมูล binray สองตัวนี้แก้ไขข้อผิดพลาดนี้

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processorปิดใช้งาน UNCC ตรวจสอบค่า 1 ปิดใช้งาน Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Command Processor UNCC ตรวจสอบค่า 1


-1

การแก้ไขการลงทะเบียน Windows ไม่คุ้มค่าและไม่ปลอดภัยใช้Map network driveและโหลดการแชร์เครือข่ายราวกับว่าโหลดจากไดรฟ์ในเครื่องของคุณ

ป้อนคำอธิบายภาพที่นี่


1
คำตอบนี้แตกต่างจากคำตอบของ Kaiอย่างไร?
SomethingDark

ฉันไม่ได้สังเกตเห็นเลยบางทีภาพหน้าจออาจมีค่าเป็นพันคำที่สร้างความแตกต่าง?
Adham Sabry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.