Windowsコマンドプロンプトの〜(ユーザーのホームディレクトリ)の代替手段は何ですか?


215

コマンドプロンプトを使用していくつかのファイルを移動しようとしています。Linuxターミナルで、~どこにいても調べたホームディレクトリを指定するのに慣れていますが、Windowsコマンドプロンプト(Documents and Settings\[user])でそれを見つけることができませんでした。

回答:


324

あなたは失望するでしょう: %userprofile%

ただし、他の端末を使用することもできます。Powershellは、XP以降(Win7にプリインストールされている)で入手できると思いますが~、ホームディレクトリとして使用できます。


39

次のことができ%HOMEDRIVE%%HOMEPATH%、ドライブのための+ \docs settings\usernameまたは\users\username


3
この回答は、ローカルシステムアカウントとして実行されているサービスで機能しました。この場合の%userprofile%にはありません。
DonBecker 2015年

15

これを行うには、%systemdrive%%homepath%環境変数を使用できます。

2つのコマンド変数を連結すると、次のように目的のユーザーのホームディレクトリパスが得られます。

  1. echo %systemdrive%コマンドプロンプトで実行すると、次のようになります。

    C:
    
  2. echo %homepath%コマンドプロンプトで実行すると、次のようになります。

    \Users\<CurrentUserName>
    

一緒に使用すると、次のようになります。

C:\Users\<CurrentUserName>

%homedrive%も必要です。上記のアレックスKの回答を参照してください
エドワードフォーク

2
@EdwardFalk回答を修正しました。アレックス%systemdrive%%homedrive%言及したものと同等の環境変数について言及するのを忘れていました。何か問題を見つけた場合は、フィードバックをお寄せください。
RBT 2017

8
Windowsでは、ユーザーフォルダ全体を別のドライブに移動できます(例:D:\ MyUser)。これらのシナリオでは、%systemdrive %% homepath%が失敗します。代わりに%HOMEDRIVE %% HOMEPATH%を使用してください。
ダニエルサントス

そうだね。これらの標準環境変数を変更することは可能ですが、通常はそうではありません。通常の企業環境では、これらの環境変数は、ここここで説明いるように、ADグループポリシーを通じてIT部門によって管理されます
RBT 2017

6

更新- 2019年7月18日より良いバージョン

最終的な要約、とにかくほとんどのWindowsコンソールの動作をPowershellに移行しましたが、この古いcmdの問題をまとめることに決めましたが、今日cmdコンソールにアクセスする必要があり、この機能の欠如に本当に悩まされました。これは最後にスペースでも機能しますが、私の以前の答えは失敗します。

さらに、これは〜を他のホームサブフォルダーのプレフィックスとしても使用できるようになり、スラッシュをバックスラッシュに交換します。だからここにあります。

ステップ1.これらのdoskeyマクロを作成します。cmdが起動するたびにこれらのマクロが取得されます。

DOSKEY cd=cdtilde.bat $* 
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..

ステップ2. cdtilde.batファイルを作成し、PATHのどこかに配置する

@echo off

set dirname=""
set dirname=%*
set orig_dirname=%*

:: remove quotes - will re-attach later.
set dirname=%dirname:\"=%
set dirname=%dirname:/"=%
set dirname=%dirname:"=%

:: restore dirnames that contained only "/"
if "%dirname%"=="" set dirname=%orig_dirname:"=%

:: strip trailing slash, if longer than 3
if defined dirname if NOT "%dirname:~3%"==""  (
    if "%dirname:~-1%"=="\" set dirname="%dirname:~0,-1%"
    if "%dirname:~-1%"=="/" set dirname="%dirname:~0,-1%"
)

set dirname=%dirname:"=%

:: if starts with ~, then replace ~ with userprofile path
if %dirname:~0,1%==~ (
    set dirname="%USERPROFILE%%dirname:~1%"
)
set dirname=%dirname:"=%

:: replace forward-slashes with back-slashes
set dirname="%dirname:/=\%"
set dirname=%dirname:"=%

chdir /D "%dirname%"

でテスト済み。

cd ~ (traditional habit)
cd~  (shorthand version)
cd.. (shorthand for going up..)
cd / (eg, root of C:)
cd ~/.config (eg, the .config folder under my home folder)
cd /Program Files (eg, "C:\Program Files")
cd C:/Program Files (eg, "C:\Program Files")
cd \Program Files (eg, "C:\Program Files")
cd C:\Program Files (eg, "C:\Program Files")
cd "C:\Program Files (eg, "C:\Program Files")
cd "C:\Program Files" (eg, "C:\Program Files")

ああ、また、スペースパスがフォルダーパス名に含まれている場合でも、私が便利だと思った遅延引用を可能にします。つまり、最初の引用だけでも機能するか、完全に引用なしでも機能します。

以下の他のすべてのものは無視される可能性があります。これは歴史的な理由により残されているため、同じ間違いを繰り返さない


古いアップデート 2018
年10月19日。他の誰かが私のアプローチを試みた場合、以下の私の元の答えはスペースを処理しませんでした。

> cd "c:\Program Files"
Files""]==["~"] was unexpected at this time.

それを解決する方法があるに違いないと思います。回答を改善できる場合は、再度投稿します。(上記を参照して、最終的にすべてを思い通りに機能させることができました。)


私の元の答え、まだ必要な作業... 2018年10月7日。
私は今日それをやろうとしていました、そして私はそれを手に入れました、これは私がうまくいくと思うものです。

まず、いくつかのドスキーマクロ。

DOSKEY cd=cdtilde.bat $* 
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..

次に、私のパスにあるbatファイル。

cdtilde.bat

@echo off
if ["%1"]==["~"] ( 
    chdir /D "%USERPROFILE%"
) else ( 
    chdir /D %* 
)

これらはすべて正常に動作するようです。

cd ~ (traditional habit)
cd~  (shorthand version)
cd.. (shorthand for going up..)

この回答には、CMDを.bashrc-typeファイルで開始する方法があります:superuser.com/questions/144347/…。この回答のステップ1.をbashrc.batファイルに入れると、起動時に設定されます。
Brydenr

2

Jayの短縮版が必要な場合は、

    set usr=%userprofile%
    cd %usr%

または、必要に応じて%u%を使用することもできます。とにかくいくつかのキーストロークを節約します。


2

自分でもほとんど同じことができます。環境変数を開き、「...のユーザー変数」の「新規」ボタンをクリックします。
変数名:
変数値: [ディレクトリを参照...]ボタンをクリックして、目的のディレクトリを選択します。

この後、cmdを開いて次のように入力します:
cd%〜%
。できます。


2

私が試したところset ~=%userprofile%、同じ習慣を使い続けたいならそれでもうまくいきます

その後、%~%代わりに使用できます。


2
~= の値を正確にどのように設定します%userprofile%か?コマンドプロンプトの投稿に記載されているとおりのコマンドを実行しましたが、エラーがスローされます- '~' is not recognized as an internal or external command, operable program or batch file.。もう少し詳しく答えてください。
RBT 2017

3
使用する場合、変数にset ~=%userprofile%使用でき%~%ます
forresthopkinsa



-5

また、ホームディレクトリに移動するフォルダーの数だけcd ... \を実行できます。たとえば、cd:\ windows \ syatem32を使用している場合、cd .... \を実行すると、自宅、つまりc:\に移動します。


2
ホーム!= c:\代わりに、元の投稿者がC:\Users\usernameフォルダ(またはc:\Documents and Settings\username以前のWindowsの場合)について尋ねます
v.karbovnichy

ルートに移動したい場合でも、未定義の数の代わりC:\ に使用するcd \ ことをお勧めしますcd ..\..\..
lcnittl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.