%20%E3%81%AE%E7%94%9F%E6%88%90%E3%82%92%E5%BC%B7%E5%88%B6%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
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.
。
答え1
コメントで述べたように... Windows が短縮名を再生成する方法として私が知っている唯一の方法は、ディレクトリをコピーして元のディレクトリを削除することです。(「Program Files」ディレクトリでは実行できません。)
長いファイル名とフォルダ名を使用するようにスクリプトを変更するのが最善です。スクリプトが を使用すると、PROGRA~1
ディレクトリがコピーバックされる方法でドライブがクローン化されたインストールで問題が発生します。たとえば、ProgramData
が最初にディスクにコピーされた場合、 という名前になりPROGRA~1
、Program Files
という名前になりますPROGRA~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.
答え2
プログラム ファイルの短縮名 (8dot3) を定義するには、次の手順を実行します。
- コンピューターを再起動
- 起動時にセーフモードで起動し、cmd プロンプトを表示します (私のコンピューターでは F8 キー)
- ログイン
コマンドプロンプトから次のコマンドを入力します
fsutil 8dot3name query fsutil behavior set disable8dot3 0 fsutil file setshortname "Program Files" PROGRA~1 dir /X
これで、プログラム ファイルに定義された短縮名が表示されます。必要に応じて、8dot3name の動作を、クエリ コマンドによって返された元の設定に戻します。