Làm thế nào để buộc tạo tên ngắn (8dot3)?


9

Tôi có một vấn đề với tên cửa sổ windows. Đôi khi, các tên ngắn dường như không được tạo cho "Tệp chương trình" và "Tệp chương trình (x86)".

Tôi đã xác minh rằng việc tạo tên ngắn được bật với fsutil behavior query disable8dot3 C:nó cho tôi biết rằng cài đặt toàn hệ thống là 2(trên mỗi ổ đĩa) và giá trị cục bộ là 0(tạo 8dot3 tên).

Nó sẽ trông gần giống như thế này (lưu ý đó là bản sao 32 bit của Đức):

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

Tuy nhiên trên một máy khác (bản sao 64 bit), nó trông giống như 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

Như bạn có thể nhận thấy, các tên ngắn bị thiếu cho các thư mục chương trình.

Câu hỏi bây giờ là làm thế nào để tạo ra chúng, bởi vì tôi cần những tên ngắn đó cho một vài tập lệnh cũ hơn. Tôi đã cố gắng với fsutil file setshortname "Program Files" "PROGRA~1", nhưng điều này chỉ mang lại cho tôi Access denied..


Cách duy nhất tôi biết làm thế nào Windows sẽ tạo lại tên ngắn là sao chép thư mục và xóa bản gốc. Tất nhiên điều đó sẽ không làm việc cho Program Files. Không thể điều chỉnh các tập lệnh? Ngoài ra, tôi hy vọng kịch bản không nghĩ rằng Program Files-directory luôn luôn PROGRA~1bởi vì nếu đó là trường hợp thì kịch bản của bạn sẽ gặp một số rắc rối nghiêm trọng vì cuối cùng các tên ngắn không giống nhau. Bạn cũng có thể yêu cầu trợ giúp nâng cấp các tập lệnh thành tên dài (thay vì tên ngắn), v.v. (nếu có thể).
Rik

Tôi nhận thức được các vấn đề với tên ngắn và tôi sẽ không bao giờ tự viết những kịch bản đó. Tôi sẽ luôn luôn sử dụng các lọ env cho điều này ( %programfiles%). Đổi tên thực sự không hoạt động. Có lẽ tôi có thể làm điều này từ ngoại tuyến? Có thể là một công việc xung quanh.
pgampe

Bạn đã thử chạy lệnh như quản trị viên? Tạo tên 8.3 cho một thư mục hiện có
phuclv

Chắc chắn rồi. Nó không hoạt động.
pgampe

Câu trả lời:


5

Giống như tôi đã nói trong nhận xét của mình ... Cách duy nhất tôi biết làm thế nào Windows sẽ tạo lại tên ngắn là sao chép thư mục và xóa bản gốc. (không thể thực hiện đối với thư mục "Tệp chương trình".)

Tốt nhất nên thay đổi tập lệnh để sử dụng tên tệp và thư mục dài. Nếu tập lệnh sử dụng, PROGRA~1nó sẽ gặp rắc rối với các cài đặt trong đó ổ đĩa được sao chép theo cách các thư mục được sao chép lại. Ví dụ, nếu ProgramDatađược sao chép đầu tiên vào đĩa, nó sẽ được đặt tên PROGRA~1Program Filessẽ được đặt tên PROGRA~2.

Có một tùy chọn để giữ cho các kịch bản hoạt động ngay bây giờ :

Bạn có thể tạo một đường nối thư mục từ PROGRA~1đến C:\Program Files. Bằng cách đó, các kịch bản tiếp tục hoạt động và bạn có thời gian để thay đổi chúng.

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

Đầu ra của 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.

Ý tưởng hay để sử dụng thư mục nhảy :)
pgampe

Là những thay đổi được thực hiện bởi mklinkvĩnh viễn hoặc chúng chỉ hoạt động trong tập lệnh bó đang được chạy? Xin lỗi tôi không có đủ thông tin về symlink và mối nối.
Alireza Mohamadi

@AlirezaMohamadi Thay đổi được thực hiện mklinklà vĩnh viễn. Chỉ thích mkdir.
Rik

9

Để xác định tên ngắn (8dot3) cho các tệp Chương trình, hãy làm như sau:

  1. Khởi động lại máy tính
  2. khi khởi động bắt đầu trong safemode với dấu nhắc cmd (F8 trên máy tính của tôi)
  3. Đăng nhập
  4. từ dấu nhắc cmd, nhập các cmds sau

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

Bây giờ bạn sẽ thấy tên ngắn được xác định cho các tệp chương trình. Nếu bạn muốn, hãy đặt hành vi 8dot3name trở lại cài đặt ban đầu được trả về bởi cmd truy vấn.


2
FWIW- Tôi không cần phải khởi động lại máy tính của mình cho bất kỳ điều này. Ngoài ra, bạn có thể chọn / bật 8.3 trên các ổ đĩa khác nhau. Vị trí đăng ký cho tất cả các cài đặt này là HKLM: \ System \ CurrentControlset \ Control \ FileSystem \ Ntfs *. Xem support.microsoft.com/en-us/kb/121007
Coruscate5

Vâng, tôi chỉ ở lại nơi tôi đã và đang làm:
Mike Mounier
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.