Bagaimana cara memaksa generasi nama pendek (8dot3)?

9

Saya memiliki masalah dengan nama pendek windows windows. Kadang-kadang nama-nama pendek tampaknya tidak dihasilkan untuk "Program Files" dan "Program Files (x86)".

Saya memverifikasi bahwa pembuatan nama pendek diaktifkan fsutil behavior query disable8dot3 C:yang memberi tahu saya bahwa pengaturan lebar sistem adalah 2(per volume) dan nilai lokalnya adalah 0(buat nama 8dot3).

Seharusnya terlihat seperti ini (perhatikan bahwa ini adalah salinan 32bit Jerman):

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

Namun di komputer lain (salinan 64bit), ini terlihat seperti 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

Seperti yang mungkin Anda perhatikan, nama-nama pendek tidak ada untuk folder program.

Pertanyaannya sekarang adalah bagaimana membuat mereka, karena saya perlu nama-nama pendek untuk beberapa skrip yang lebih tua. Saya mencoba fsutil file setshortname "Program Files" "PROGRA~1", tetapi ini hanya memberi saya Access denied..

pgampe
sumber
Satu-satunya cara saya tahu bagaimana Windows akan menghasilkan ulang nama pendek adalah menyalin direktori dan menghapus yang asli. Tentu saja itu tidak akan berhasil untuk Program Files. Tidak mungkin menyesuaikan skrip? Juga, saya berharap skrip tidak berpikir Program Filesdirektori-selalu PROGRA~1karena jika itu kasus skrip Anda akan berjalan dalam beberapa masalah serius pada akhirnya karena nama-nama pendek tidak selalu sama. Anda juga dapat meminta bantuan untuk memutakhirkan skrip ke nama panjang (bukan nama pendek) findfirst dll. (Jika memungkinkan).
Rik
Saya menyadari masalah dengan nama pendek dan saya tidak akan pernah menulis skrip itu sendiri. Saya akan selalu menggunakan env vars untuk ini ( %programfiles%). Mengganti nama memang tidak bekerja. Mungkin saya bisa melakukan ini dari offline? Bisa jadi solusi.
pgampe
apakah Anda mencoba menjalankan perintah sebagai admin? Buat 8,3 nama untuk direktori yang ada
phuclv
Tentu. Tidak berfungsi.
pgampe

Jawaban:

5

Seperti yang saya katakan di komentar saya ... Satu-satunya cara saya tahu bagaimana Windows akan menghasilkan ulang nama pendek adalah menyalin direktori dan menghapus yang asli. (tidak dapat dilakukan untuk direktori "Program Files".)

Akan lebih baik untuk mengubah skrip untuk menggunakan nama file dan folder yang panjang. Jika script menggunakannya PROGRA~1akan mendapat masalah dengan instalasi di mana drive itu dikloning dengan cara direktori tempat disalin kembali. Sebagai contoh jika ProgramDatadisalin terlebih dahulu ke disk itu akan dinamai PROGRA~1dan Program Filesakan dinamai PROGRA~2.

Ada opsi untuk menjaga agar skrip berfungsi sekarang :

Anda bisa membuat persimpangan direktori dari PROGRA~1ke C:\Program Files. Dengan begitu skrip tetap berfungsi dan Anda punya waktu untuk mengubahnya.

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

Output dari 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.
Rik
sumber
Ide bagus untuk menggunakan lompatan direktori :)
pgampe
Apakah perubahan dilakukan secara mklinkpermanen atau hanya berfungsi dalam skrip batch yang sedang dijalankan? Maaf saya tidak punya cukup info tentang symlink dan persimpangan.
Alireza Mohamadi
@AlirezaMohamadi Perubahan yang dibuat mklinkbersifat permanen. Sama seperti mkdir.
Rik
9

Untuk menentukan nama pendek (8dot3) untuk file Program lakukan hal berikut:

  1. Nyalakan kembali komputer
  2. saat boot dimulai di safemode dengan cmd prompt (F8 di komputer saya)
  3. Gabung
  4. dari cmd prompt masukkan cmds berikut

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

Anda sekarang akan melihat nama pendek yang ditentukan untuk file program. Jika Anda mau, atur kembali perilaku 8dot3name ke pengaturan asli yang dikembalikan oleh cmd kueri.

monkeyfncoconut
sumber
2
FWIW- Saya tidak perlu me-reboot komputer saya untuk semua ini. Anda juga dapat secara selektif mengaktifkan / menonaktifkan 8.3 pada drive yang berbeda. Lokasi registri untuk semua pengaturan ini adalah HKLM: \ System \ CurrentControlSet \ Control \ FileSystem \ Ntfs *. Lihat support.microsoft.com/en-us/kb/121007
Coruscate5
Ya, saya hanya tinggal di tempat saya berada dan melakukannya:
Mike Mounier