私はwindows windows shortnamesに問題があります。 「Program Files」と「Program Files(x86)」の短い名前が生成されないように見える場合があります。
システム全体の設定がfsutil behavior query disable8dot3 C:
(ボリュームごと)であり、ローカル値が2
(8dot3名を作成)であることを示す0
で短い名前の生成が有効になっていることを確認しました。
おおよそ次のようになります(これはドイツの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」ディレクトリでは実行できません。)
長いファイル名とフォルダー名を使用するようにスクリプトを変更することをお勧めします。スクリプトがPROGRA~1
を使用する場合、ディレクトリがコピーされた方法でドライブが複製されたインストールで問題が発生します。たとえば、ProgramData
が最初にディスクにコピーされた場合、PROGRA~1
という名前になり、Program Files
はPROGRA~2
という名前になります。
今のところスクリプトを機能させるオプションがあります:
directory-junctionを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.
プログラムファイルの短縮名(8dot3)を定義するには、次の手順を実行します。
コマンドプロンプトから次のコマンドを入力します
fsutil 8dot3name query
fsutil behavior set disable8dot3 0
fsutil file setshortname "Program Files" PROGRA~1
dir /X
プログラムファイルに定義された短縮名が表示されます。必要に応じて、8dot3nameの動作を、クエリcmdによって返された元の設定に戻します。