回答:
開始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
/s
スイッチはサブフォルダーの再帰を行います
便利なディレクトリにbatファイルを作成し、そのパスから短いパスをコピーして貼り付けることができます。
実行して、現在のディレクトリに対してもコマンドを実行command.com
し続けることができcd
ます。
Windowsバッチスクリプトで、%~s1
パスパラメーターを短い名前に展開します。このバッチファイルを作成します。
@ECHO OFF
echo %~s1
私は私のものshortNamePath.cmd
を呼び出して、次のように呼び出します:
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
SET
と名前付き変数を使用する
Windowsコマンドプロンプトには、値にスペースが含まれる変数を処理するためのいくつかの規則があり、特にUnixのバックグラウンドがある場合は、学習と理解がやや困難です。できるよ
SET TESTPATH=c:\Program Files (x86)\Android\android-sdk
(引用符なし)、または
SET "TESTPATH=c:\Program Files (x86)\Android\android-sdk"
(引用符の直感的でない配置に注意してください); それから
CALL :testargs "%TESTPATH%"
︙
:testargs
echo %~s1
goto :eof
ここに1つのライナーがあります:
cmd /c for %A in ("C:\Program Files") do @echo %~sA
内訳:
cmd /c
-Windowsコマンドインタープリターの新しいインスタンスを起動し、stringで指定されたコマンドを実行してから終了しますfor %%parameter in (set) do
command-コマンドを条件付きで数回実行します。echo
-メッセージを画面に表示します。@
symbolは、ECHO OFF
現在の行にのみ適用されるものと同じです。%~s
-拡張パスには短い名前のみが含まれます。ソース:
cmd /c
ですか?コマンドプロンプトウィンドウを使用している場合は、コマンドを入力するだけfor %A in ("C:\Program Files") do @echo %~sA
で、[実行]ダイアログボックスに入力すると、結果が表示されなくなります。
cmd /c
から実行する場合は必要ありませんcmd
。あなたはからそれが必要なのですPowerShellのが、その後、あなたもする必要があります'...'
後にトークン-enclose /c
:cmd /c 'for %f in ("C:\Program Files") do @echo %~sf'
「短縮名」は実際には古い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
...~4
)がハッシュのように見えます。たとえばABxxxx~1
、xは16進数でしたが、これは読みにくいです。
ABCDEFGH-CAT
、それは短い名前になりABCDEF~1
ます。次に作成するとABCDEFGH-DOG
、短い名前になりABCDEF~2
ます。私はその後、削除した場合ABCDEFGH-CAT
、ABCDEFGH-DOG
まだ短い名前を持っていますABCDEF~2
。長い名前を見るだけではわかりません。
~1
。Windowsが短い名前を生成するために使用する規則を参照してください。また、を使用して短い名前を手動で設定することもできるfsutil
ため、2つの名前にはまったく関係がない場合があります。単独のハードやソフトリンクしてみましょう
Powershellがインストールされている場合、現在のディレクトリ(またはその他)の短いパス名を解決する非常に便利な方法を見つけました。
現在のディレクトリでPowerShellを開くだけです
cmd windows type powershell
guiでフォルダーを開いている場合は、フォルダーのアドレスバーにcmd.exeまたはpowershell.exeを直接入力できます。
その後、コマンドを与える
(New-Object -ComObject Scripting.FileSystemObject).GetFolder(".").ShortPath
情報の起源:[ https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]
または、PathCopyCopyと呼ばれるこの素晴らしい小さなツールを使用できます
数回クリックするだけで、コンテキストメニューから文字通り任意のフォルダーの長いパスと短いパスを取得できます。例:
宛先フォルダーを右クリック=> Path Copy => Short Path。
できた クリップボードにコピーされます。
npm install
ボイラープレートで実行してノードモジュールをインストールしました。これらのフォルダーを削除しようとしている間、パスが長すぎて処理できないため、Windowsではフォルダーを削除できません。
いくつかの浅い調査の後、この試みでも違反例外をスローするように、フォルダーをルートからリーフに名前変更するのは正しいコードスニペットだと思いました。
わたしにはできる。以下は、C#プロジェクトのコードです。
public static int directoryCounterIndex = 0;
public static void Main(string[] args)
{
string dirPath = @"D:\Studies\MeanStack\a\nodem";
RenameDirectories(dirPath);
}
private static void RenameDirectories(string dirPath)
{
directoryCounterIndex += 1;
var newPath = Path.GetDirectoryName(dirPath) + Path.DirectorySeparatorChar + directoryCounterIndex.ToString();
Directory.Move(dirPath, newPath);
var subDirectories = Directory.GetDirectories(newPath);
foreach (var subDirectory in subDirectories)
{
RenameDirectories(subDirectory);
}
}
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"
これは、スペースを含むファイルを扱うときに使用した最も簡単な方法であり、ファイルエクスプローラからもアクセスできますが、すべて同じアクセス権限があります。
スペースを
%20
物事が「翻訳」される方法であり、スペースは%20に入ります。
本当に必要な場合は、ブラウザを開いて次のように入力するだけです
test ";($#< and find the word test, and see that the space is %20 and so on...
if exist C:\Program%20Files\ (echo exists)