2011-10-19 00:35:44 +0000 2011-10-19 00:35:44 +0000
83
83

Windowsのディレクトリ/ファイルの短いパスを見つけるにはどうしたらいいですか?

私が使用しているアプリケーションでは、短いパス名を使用する必要があります。例えば、C:\PROGRA~1 私が使用しているアプリケーションでは、短いパス名を使用する必要があります。例えば、ではなくC:\Program Filesが必要です。プログラムはスペースを扱うことができず、引用符で囲まれたパス(例:“C:\Program Files”`)を受け入れません。必要であれば、XP以降のどのバージョンでもアクセスできます。

回答 (12)

84
84
84
2011-10-19 00:51:45 +0000

起動して、ランボックスにcmdと入力してください。cmd を開始し、cd を使用して興味のあるフォルダに到達するために:

cd \

それから

dir /x

C:\>dir /x

13/10/2011 09:14 AM <DIR> DOCUME~1 Documents and Settings
13/10/2011 09:05 AM <DIR> PROGRA~1 Program Files
42
42
42
2014-03-13 23:11:39 +0000

Windows のバッチスクリプトでは、 command.com はパスパラメータを短い名前に展開します . このバッチファイルを作成して下さい:

@ECHO OFF
echo %~s1

私は鉱山を cd と呼び、それをこのように呼びます:

C:\> shortNamePath "c:\Program Files (x86)\Android\android-sdk"
c:\PROGRA~2\Android\ANDROI~1

ここにパラメータが供給されなかった場合の現在のディレクトリを使用するバージョンがあります:

@ECHO OFF
if '%1'=='' (%0 .) else echo %~s1

パラメータなしで呼ばれた。

C:\Program Files (x86)\Android\android-sdk> shortNamePath
C:\PROGRA~2\Android\ANDROI~1

%~s1 と名前付き変数の使用

Windows コマンドプロンプトには、値にスペースを含む変数を扱うためのいくつかの規則がありますが、これは Unix のバックグラウンドを持っている場合は特に、学習して理解するのがやや難しいものです。 あなたは

SET TESTPATH=c:\Program Files (x86)\Android\android-sdk

(no 引用符で)、または

SET "TESTPATH=c:\Program Files (x86)\Android\android-sdk"

(引用符の直感的でない配置に注意してください);そして

CALL :testargs "%TESTPATH%"
        ︙

:testargs
echo %~s1
goto :eof
``` をすることができます。
13
13
13
2017-05-22 06:42:16 +0000

1ライナー

cmd /c for %A in ("C:\Program Files") do @echo %~sA

ブレークダウン

  • cmd /c - Windowsコマンドインタプリタの新しいインスタンスを起動し、文字列で指定されたコマンドを実行して終了する
  • for %%parameter in (set) do コマンド - 条件付きでコマンドを複数回実行します。
  • echo - 画面にメッセージを表示します。 @ シンボルは現在の行にのみ適用される ECHO OFF と同じです。
9
9
9
2011-10-19 01:02:20 +0000

短縮名」は実際には古いDOS 8.3の命名規則ですので、すべてのディレクトリは最初の6文字の後に~1が続き、一致する名前が1つだけあると仮定して、例えば:

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\BCDEFG~1 - C:\BCDEFGHIJKL M Another Directory

ここに唯一の例外があります

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\ABCDEF~2 - C:\ABCDEFGHI Directory as well
7
7
7
2018-05-12 11:16:06 +0000

私はあなたがPowershellがインストールされている場合は、現在のディレクトリ(または他の何か)の短いパス名を解決するための非常に便利な方法を発見しました。

ちょうど現在のディレクトリの

4
4
4
2018-05-12 15:31:59 +0000

Ivan Schwartzさんの答えのように、"C:\Program Files “を%cd%に置き換えて、現在のディレクトリを取得することができます:

cmd /c for %A in ("%cd%") do @echo %~sA
0
0
0
2017-06-23 17:15:55 +0000

代わりに、この素晴らしい小さなツールを使用することができます PathCopyCopy

数回のクリックで、文字通り任意のフォルダの長いパスと短いパスを取得することができますコンテクストメニューから、例えば:

右クリック先フォルダで=>パスコピー=>短いパス。クリップボードにコピーされます。

0
0
0
2019-11-03 14:38:08 +0000
@echo off
for %%i in (%*) do echo %%~si
pause

shortpath.batとして保存し、その上にファイルをドラッグしてください。結果:

C:\PROGRA~1
C:\PROGRA~2
C:\PROGRA~3
C:\Python27
C:\Users
C:\Windows
Press any key to continue . . .

shortpath <file path>で呼び出してもOKです。

0
0
0
2017-12-02 17:57:42 +0000
C:\Users\abcd>subst z: "c:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

C:\Users\abcd>subst
Z:\: => C:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

これは、スペースを持つファイルを扱うときに私が使用している最も簡単な方法であり、これはあまりにもファイルエクスプローラからアクセス可能ですが、すべての同じアクセス権を持っています。

0
0
0
2020-01-26 22:04:35 +0000

**レジストリのキーがショートネームの作成を禁止したので、これらの解決策のどれも私のwindows 10ラップトップでは動作していませんでした。:

  • Alt+r, type regedit to open the registry editor
  • go to HKEYLOCALMACHINE\SYSTEM\CurrentControlSetControl\FileSystem
  • look for the NtfsDisable8dot3NameCreation key . 値が0x00000001(1), then your system does not create any shortname for your folder/file
  • this case double clic on the NtfsDisable8dot3NameCreation key,
  • type 0 in the data field

this is not retroactive :) つまり、古いアプリからアクセスする必要があるフォルダやファイルを再作成する必要があるということです。

ファイルシステムの操作を高速化するためにこのキーを導入したようです。

-1
-1
-1
2016-11-06 10:51:58 +0000

ノードモジュールをインストールするために、ボイラープレートの上に npm install を実行しています。

いくつかの浅い研究の後、私はそれが正しいだろうと思った私自身のコードスニペットの一部は、それがこの試みのための違反例外をスローするように、フォルダの名前をルートからリーフに変更します。次はC#プロジェクトのためのコードである。

-2
-2
-2
2016-02-10 15:18:55 +0000

スペースを

%20

それは物事が “翻訳 "されている方法であり、スペースは%20に入ります。