วิธีการบังคับให้สร้างชื่อย่อ (8dot3)?


9

ฉันมีปัญหากับชื่อย่อของ windows windows บางครั้งชื่อย่อดูเหมือนจะไม่ถูกสร้างขึ้นสำหรับ "Program Files" และ "Program Files (x86)"

ฉันตรวจสอบว่าเปิดใช้งานการสร้างชื่อย่อด้วยfsutil behavior query disable8dot3 C:ซึ่งบอกฉันว่าการตั้งค่าความกว้างของระบบคือ2(ต่อโวลุ่ม) และค่าท้องถิ่นคือ0(สร้างชื่อ 8dot3)

ควรมีลักษณะประมาณนี้ (โปรดทราบว่าเป็นสำเนา 32 บิตภาษาเยอรมัน):

C:\>dir /a /x

 Verzeichnis von C:\

21.12.2011  00:17    <DIR>                       $Recycle.Bin
14.07.2009  05:53    <VERBINDUNG>   DOCUME~1     Documents and Settings [C:\Users]
09.01.2011  15:35    <VERBINDUNG>   DOKUME~1     Dokumente und Einstellungen [C:Users]
27.11.2013  15:11     2.147.016.704              pagefile.sys
14.07.2009  03:37    <DIR>                       PerfLogs
26.11.2013  17:31    <DIR>          PROGRA~1     Program Files
08.11.2013  21:58    <DIR>          PROGRA~2     ProgramData
09.01.2011  15:35    <VERBINDUNG>   PROGRA~3     Programme [C:\Program Files]
09.01.2011  15:35    <DIR>                       Recovery
26.11.2013  17:40    <DIR>          SYSTEM~1     System Volume Information
23.01.2011  15:00    <DIR>                       Temp
11.01.2011  20:56    <DIR>                       Users
08.11.2013  14:53    <DIR>                       Windows

อย่างไรก็ตามในเครื่องอื่น (สำเนา 64 บิต) ดูเหมือนว่า C:> dir / a / x

 Verzeichnis von C:\

21.12.2011  00:17    <DIR>                       $Recycle.Bin
14.07.2009  05:53    <VERBINDUNG>   DOCUME~1     Documents and Settings [C:\Users]
09.01.2011  15:35    <VERBINDUNG>   DOKUME~1     Dokumente und Einstellungen [C:Users]
27.11.2013  15:11     2.147.016.704              pagefile.sys
14.07.2009  03:37    <DIR>                       PerfLogs
26.11.2013  17:31    <DIR>                       Program Files
26.11.2013  17:31    <DIR>                       Program Files (x86)
08.11.2013  21:58    <DIR>                       ProgramData
09.01.2011  15:35    <DIR>                       Recovery
26.11.2013  17:40    <DIR>          SYSTEM~1     System Volume Information
23.01.2011  15:00    <DIR>                       Temp
11.01.2011  20:56    <DIR>                       Users
08.11.2013  14:53    <DIR>                       Windows

อย่างที่คุณอาจสังเกตเห็นชื่อย่อหายไปสำหรับโฟลเดอร์ของโปรแกรม

คำถามคือวิธีการสร้างพวกเขาเพราะฉันต้องการชื่อสั้น ๆ เหล่านั้นสำหรับสคริปต์ที่เก่ากว่า ฉันพยายามที่มีแต่เพียงแค่นี้ให้ฉันfsutil file setshortname "Program Files" "PROGRA~1"Access denied.


วิธีเดียวที่ฉันรู้ว่า Windows กำลังจะสร้างชื่อย่อใหม่คือการคัดลอกไดเรกทอรีและลบต้นฉบับ Program Filesแน่นอนว่าจะไม่ทำงานให้กับ ไม่สามารถปรับสคริปต์ได้ใช่ไหม นอกจากนี้ฉันหวังว่าสคริปต์จะไม่คิดว่าProgram Filesไดเรกทอรีเป็นPROGRA~1เพราะถ้าเป็นกรณีที่สคริปต์ของคุณจะทำงานในปัญหาร้ายแรงบางอย่างในที่สุดเพราะชื่อสั้นไม่เหมือนกันเสมอ คุณสามารถขอความช่วยเหลือในการอัพเกรดสคริปต์เป็น long-name (แทนที่จะเป็น short-name) findfirst เป็นต้น (ถ้าเป็นไปได้)
Rik

ฉันรู้ปัญหาเกี่ยวกับชื่อสั้น ๆ และฉันจะไม่เขียนสคริปต์เหล่านั้นด้วยตนเอง ฉันมักจะใช้ vars env สำหรับสิ่งนี้ ( %programfiles%) การเปลี่ยนชื่อไม่ได้ผลแน่นอน บางทีฉันสามารถทำได้จากออฟไลน์ อาจเป็นการหลีกเลี่ยงปัญหา
pgampe

คุณลองใช้คำสั่งเป็นผู้ดูแลระบบหรือไม่ สร้างชื่อ 8.3 สำหรับไดเรกทอรีที่มีอยู่
phuclv

แน่ใจ มันไม่ได้ผล.
pgampe

คำตอบ:


5

อย่างที่ฉันพูดในความคิดเห็นของฉัน ... วิธีเดียวที่ฉันรู้ว่า Windows กำลังจะสร้างชื่อย่อใหม่คือการคัดลอกไดเรกทอรีและลบต้นฉบับ (ไม่สามารถทำได้สำหรับไดเรกทอรี "ไฟล์โปรแกรม")

เป็นการดีที่สุดที่จะเปลี่ยนสคริปต์เพื่อใช้ชื่อไฟล์และชื่อโฟลเดอร์แบบยาว หากสคริปต์ใช้PROGRA~1มันจะมีปัญหากับการติดตั้งที่ไดรฟ์ถูกโคลนในแบบไดเรกทอรีที่คัดลอกกลับ ตัวอย่างเช่นถ้าProgramDataมีการคัดลอกแรกบนดิสก์มันจะมีชื่อPROGRA~1และจะได้รับการตั้งชื่อProgram FilesPROGRA~2

มีตัวเลือกเพื่อให้สคริปต์ทำงานได้ในตอนนี้ :

คุณสามารถสร้างไดเรกทอรีแยกจากไปPROGRA~1 C:\Program Filesวิธีนี้จะทำให้สคริปต์ทำงานต่อไปและคุณมีเวลาเปลี่ยนมัน

mklink /J "C:\PROGRA~1" "C:\Program Files"

ผลลัพธ์ของmklink /?:

Creates a symbolic link.

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is a file
                symbolic link.
        /H      Creates a hard link instead of a symbolic link.
        /J      Creates a Directory Junction.
        Link    specifies the new symbolic link name.
        Target  specifies the path (relative or absolute) that the new link
                refers to.

เป็นความคิดที่ดีที่จะใช้ไดเรกทอรีกระโดด :)
pgampe

มีการเปลี่ยนแปลงโดยmklinkถาวรหรือเพียงแค่ทำงานในชุดสคริปต์ที่กำลังทำงานอยู่? ขออภัยฉันมีข้อมูลไม่เพียงพอเกี่ยวกับ symlink และ junctions
Alireza Mohamadi

@AlirezaMohamadi การเปลี่ยนแปลงที่ทำกับmklinkเป็นสิ่งถาวร เหมือนmkdirกันนะ
Rik

9

ในการกำหนดชื่อย่อ (8dot3) สำหรับไฟล์โปรแกรมให้ทำดังนี้:

  1. รีสตาร์ทคอมพิวเตอร์
  2. เมื่อบู๊ตเครื่องเริ่มต้นใน safemode พร้อมรับคำสั่ง cmd (F8 บนคอมพิวเตอร์ของฉัน)
  3. เข้าสู่ระบบ
  4. จาก cmd prompt ป้อน cmds ต่อไปนี้

    fsutil 8dot3name query
    fsutil behavior set disable8dot3 0
    fsutil file setshortname "Program Files" PROGRA~1
    dir /X
    

ตอนนี้คุณควรเห็นชื่อย่อที่กำหนดสำหรับไฟล์โปรแกรม หากคุณต้องการตั้งค่าพฤติกรรม 8dot3name กลับไปเป็นการตั้งค่าดั้งเดิมซึ่งส่งกลับโดยแบบสอบถาม cmd


2
FWIW- ฉันไม่จำเป็นต้องรีบูทคอมพิวเตอร์เพราะเรื่องนี้ นอกจากนี้คุณสามารถเลือกเปิด / ปิดการใช้งาน 8.3 บนไดรฟ์ที่แตกต่างกัน ตำแหน่งรีจิสทรีสำหรับการตั้งค่าทั้งหมดนี้คือ HKLM: \ System \ CurrentControlSet \ Control \ FileSystem \ Ntfs * ดูsupport.microsoft.com/en-us/kb/121007
Coruscate5

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