คำสั่งสร้างทางลัดตัดชื่อแหล่งเส้นทางโฟลเดอร์ไปยังอักขระแปด

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 263324 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

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

J:\Mydirectory\Myapplication.exe

หากไดรฟ์ J ไม่มี เส้นทาง ถูกตัดทอน:

J:\Mydirect\Mypplica.exe

สาเหตุ

ปัญหานี้อาจเกิดขึ้นได้เนื่องจากไม่สามารถกำหนด shell ว่าฮาร์ดดิสก์รองรับชื่อแฟ้มที่ยาว ดังนั้นเส้นทางจะถูกปัดเศษเป็น ยอมรับได้กับระบบแฟ้มทั้งหมด

สถานะ

Microsoft ยืนยันว่า ปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ ในตอนต้นของบทความนี้

ข้อมูลเพิ่มเติม

ตรวจปัญหานี้อาจจะสอบเมื่อคุณใช้ใดก็ได้ วิธีต่อไปนี้เพื่อสร้างทางลัดไปยัง:
  • สร้างโปรแกรมติดตั้งระบบจัดการ Server (SMS) วิธีลัด
  • VBScript สร้างวิธีลัด
  • วิธีการอินเทอร์เฟซสำหรับ IShellLink

โปรแกรมติดตั้ง SMS สร้างวิธีลัด


แยกจากแฟ้ม.ipf SMS Installer แสดง ปัญหา:
item: Create Shortcut
  Source English=X:\Pw32\Alongdirectory\Blongdirectory\Longfilename.exe
  Destination English=C:\Winnt\Shortcut123.lnk
  Key Type English=1536
  Flags=00000001
end
				
ถ้าคุณทำการคอมไพล์สคริปต์ ด้วยการดึงข้อมูลนี้ และคุณเรียกใช้หลังจาก คุณมี ensured ไม่มีไดรฟ์ X คุณสามารถสังเกตเห็นที่ทางลัด สร้าง แต่เส้นทางปลายทางจะถูกปัดเศษเป็น:

X:\Pw32\Alongdir\Blongdir\Longfile.exe

ถ้าคุณเชื่อมต่อไดรฟ์ X ไปยัง ใช้ร่วมกัน หรือใช้กับsubstคำสั่งให้ชี้ไปยังไดรฟ์ภายในเครื่องและคุณรันสคริปต์อีกครั้ง ทางลัดถูกสร้างขึ้น ด้วยเส้นทางปลายทางที่ถูกต้อง:

X:\Pw32\Alongdirectory\Blongdirectory\Longfilename.exe

ปัญหานี้ เป็นผลมาจากโปรแกรมติดตั้ง SMS ปัญหานี้เกิดขึ้นเนื่องจาก SMS โปรแกรมติดตั้งใช้อินเทอร์เฟซสำหรับ IShellLink (ดูส่วน "ได IShellLink ติดต่อ วิธี") เพื่อสร้างทางลัด โปรแกรมติดตั้ง SMS ผ่านเส้นทางที่ถูกต้องอย่างสมบูรณ์แบบ ชื่อของอินเทอร์เฟซสำหรับ IShellLink แต่เส้นทางถูกตัดทอนเมื่อนั้น IShellLink::SetPath การดำเนินงาน

วิธีลัดสร้าง VBScript

ตัวอย่าง VBScript ที่อธิบายเกี่ยวกับปัญหา:
set WshShell = WScript.CreateObject("WScript.Shell")
set oShellLink = WshShell.CreateShortcut("d:\" & "\Long filename Shortcut .lnk")
oShellLink.TargetPath = "j:\my long directory\myapplication.exe"
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+F"
oShellLink.Description = "Long Filename Shortcut"
oShellLink.Save
				
เมื่อคุณเรียกใช้สคริปต์นี้ และไม่พบไดรฟ์ J คุณสามารถสังเกตเห็น ทางลัดที่สร้างขึ้นใหม่ แต่เส้นทางเป้าหมายคือ:

J:\My_long_\Myapplic.exe

หมายเหตุ: อักขระที่ไม่ได้รับการสนับสนุนตามปกติ โดยระบบแฟ้ม นอกจากนี้ที่ไม่ต้องชื่อแฟ้มที่ยาว เช่นอักขระช่องว่าง จะถูกแทนที่ด้วย สัญลักษณ์อักขระขีดล่าง "_"

เมื่อต้องการหลีกเลี่ยงปัญหานี้ คุณสามารถใช้ ที่substคำสั่งที่จะชี้ไดรฟ์ J ลงบนฮาร์ดดิสก์ภายในเครื่อง:
set WshShell = WScript.CreateObject("WScript.Shell")
Dim ret
'subst a drive to make the mapping work
ret = WshShell.Run ("cmd /c subst j: c:\", 0, TRUE)
set oShellLink = WshShell.CreateShortcut("d:\" & "\Long filename Shortcut .lnk")
oShellLink.TargetPath = "j:\my long directory\myapplication.exe"
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+F"
oShellLink.Description = "Long Filename Shortcut"
oShellLink.Save
'remove the subst
ret = WshShell.Run ("cmd /c subst j: /d", 0, TRUE)
				
คำสั่งนี้ไดรฟ์ J ที่ชี้ไปยังไดรฟ์ c ถ้าไดรฟ์ C สนับสนุนแฟ้มแบบยาว ชื่อ คำสั่งสร้างทางลัดที่ มีเส้นทางเป้าหมายดังต่อไปนี้:

J:\My directory\Myapplication.exe ยาว

นอกจากนี้คุณยังสามารถใช้ WshNetwork.MapNetworkDrive การเชื่อมต่อไดรฟ์ J ใช้ร่วมกันรู้จัก สร้างการ ทางลัดเป็นเค้าร่างในขั้นตอนก่อนหน้านี้ แล้ว เอาไดรฟ์ J โดยใช้ WshNetwork.RemoveNetworkDrive

วิธีการอินเทอร์เฟซสำหรับ IShellLink

การดึงข้อมูลรหัสที่อธิบายเกี่ยวกับปัญหา โดยใช้การ IShellLink อินเทอร์เฟซใน c ++ภาพของ Microsoft:
HRESULT hres; 

IShellLink* psl; 
 
    // Get a pointer to the IShellLink interface. 
    hres = CoCreateInstance(CLSID_ShellLink, NULL, 
        CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *) &psl); 
    if (SUCCEEDED(hres)) { 
        IPersistFile* ppf; 
 
        // Set the path to the shortcut target and add the 
        // description. 
        hres = psl->SetPath("X:\\azertyuiop\\azertyuiop.exe");
				
คุณต้องใช้ IPersistFile::Save ในการเขียนทางลัดไปยังดิสก์ นี้ ดำเนินการในเส้นทางเป้าหมายของผลลัพธ์:

X:\Azertyui\Azertyui.exe

ปัญหานี้เกิดขึ้นในทุกรุ่น Windows NT 4.0 และ Windows 2000

คุณสมบัติ

หมายเลขบทความ (Article ID): 263324 - รีวิวครั้งสุดท้าย: 28 มกราคม 2554 - Revision: 5.0
ใช้กับ
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
Keywords: 
kbnofix kbprb kbsms200presp3 kbui kbmt KB263324 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:263324

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com