Was ist die Alternative für ~ (Benutzerverzeichnis) an der Windows-Eingabeaufforderung?

215

Ich versuche, die Eingabeaufforderung zum Verschieben einiger Dateien zu verwenden. Ich bin an das Linux-Terminal gewöhnt, in dem ich ~mein Ausgangsverzeichnis angegeben habe, das ich überall gesucht habe, aber ich konnte es anscheinend nicht für die Windows-Eingabeaufforderung finden ( Documents and Settings\[user])

fenerlitk
quelle

Antworten:

324

Sie werden enttäuscht sein: %userprofile%

Sie können jedoch auch andere Terminals verwenden. Mit Powershell, von dem ich glaube, dass Sie es unter XP und höher erhalten können (und das mit Win7 vorinstalliert ist), können Sie es ~für das Home-Verzeichnis verwenden.

Jay
quelle
39

Sie können %HOMEDRIVE%%HOMEPATH%für das Laufwerk + \docs settings\usernameoder \users\username.

Alex K.
quelle
3
Diese Antwort funktionierte für einen Dienst, der als lokales Systemkonto ausgeführt wird. % userprofile% in diesem Fall nicht.
DonBecker
15

Sie können %systemdrive%%homepath%Umgebungsvariablen verwenden, um dies zu erreichen.

Wenn die beiden Befehlsvariablen verkettet sind, erhalten Sie den Home-Verzeichnispfad des gewünschten Benutzers wie folgt:

  1. Das Ausführen echo %systemdrive%an der Eingabeaufforderung bietet:

    C:
    
  2. Das Ausführen echo %homepath%an der Eingabeaufforderung bietet:

    \Users\<CurrentUserName>
    

Wenn es zusammen verwendet wird, wird es:

C:\Users\<CurrentUserName>
RBT
quelle
Sie benötigen außerdem% homedrive%. siehe Alex Ks Antwort oben
Edward Falk
2
@ EdwardFalk Ich habe meine Antwort korrigiert. Ich hatte es versäumt, die %systemdrive%Umgebungsvariable zu erwähnen , die der %homedrive%von Alex erwähnten entspricht . Bitte geben Sie mir Ihr Feedback dazu, wenn Sie etwas falsch finden.
RBT
8
In Windows können Sie Ihren gesamten Benutzerordner auf ein anderes Laufwerk verschieben (Beispiel: D: \ MyUser). In diesen Szenarien schlägt% systemdrive %% homepath% fehl. Stattdessen sollte% HOMEDRIVE %% HOMEPATH% verwendet werden.
Daniel Santos
Wahr. Es ist möglich, aber es ist nicht üblich, dass Benutzer diese Standardumgebungsvariablen ändern. In einer normalen Unternehmensumgebung werden diese Umgebungsvariablen von der IT-Abteilung über AD-Gruppenrichtlinien gesteuert, wie hier und hier erwähnt .
RBT
6

Update - bessere Version 18. Juli 2019.

Abschließende Zusammenfassung: Obwohl ich für die meisten Windows-Konsolenarbeiten ohnehin zu Powershell übergegangen bin, mich aber entschlossen habe, dieses alte Cmd-Problem zu lösen, musste ich mich heute auf eine Cmd-Konsole setzen, und das Fehlen dieser Funktion hat mich wirklich beeindruckt. Dieser funktioniert schließlich auch mit Leerzeichen, bei denen meine vorherige Antwort fehlschlagen würde.

Darüber hinaus kann dieser jetzt auch ~ als Präfix für andere Home-Unterordner verwenden und auch Schrägstriche in Schrägstriche umtauschen. Hier ist es also;

Schritt 1. Erstellen Sie diese Doskey- Makros, die bei jedem Start von cmd irgendwo abgeholt werden.

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

Schritt 2. Erstellen Sie die Datei cdtilde.bat und fügen Sie sie irgendwo in Ihren PATH ein

@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%"

Gut getestet mit;

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")

Oh, es erlaubt auch ein verzögertes Zitieren, was ich nützlich fand, selbst wenn Leerzeichen in den Ordnerpfadnamen sind, da alle Argumente so umbrochen werden, als wäre es eine lange Zeichenfolge. Das heißt, nur ein erstes Zitat funktioniert auch oder ganz ohne Anführungszeichen.

Alle anderen Dinge unten können jetzt ignoriert werden, sie bleiben aus historischen Gründen übrig - also mache ich nicht wieder dieselben Fehler


altes Update 19. Oktober 2018.
Falls jemand anderes meinen Ansatz ausprobiert hat, hat meine ursprüngliche Antwort unten keine Leerzeichen behandelt, z. B. ist Folgendes fehlgeschlagen.

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

Ich denke, es muss einen Weg geben, das zu lösen. Werde wieder posten, wenn ich meine Antwort verbessern kann. (siehe oben, ich habe endlich alles so zum Laufen gebracht, wie ich es wollte.)


Meine ursprüngliche Antwort brauchte noch Arbeit ... 7. Oktober 2018.
Ich habe heute nur versucht, es zu tun, und ich glaube, ich habe es verstanden. Ich denke, das funktioniert gut.

Erstens einige Doskey- Makros;

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

und dann eine Fledermausfeile auf meinem Weg;

cdtilde.bat

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

All dies scheint gut zu funktionieren;

cd ~ (traditional habit)
cd~  (shorthand version)
cd.. (shorthand for going up..)
Christopher Plewright
quelle
Mit dieser Antwort können Sie CMD mit einer .bashrcDatei vom Typ " superuser.com/questions/144347/…" starten . Wenn Sie Schritt 1 aus dieser Antwort in die bashrc.batDatei einfügen, wird sie beim Start festgelegt.
Brydenr
2

Wenn Sie eine kürzere Version von Jay's möchten, können Sie es versuchen

    set usr=%userprofile%
    cd %usr%

Oder Sie könnten sogar % u% verwenden, wenn Sie möchten. Es spart trotzdem einige Tastenanschläge.

Scotty J.
quelle
2

Sie können fast das gleiche selbst tun. Öffnen Sie Umgebungsvariablen und klicken Sie unter "Benutzervariablen für ..." auf die Schaltfläche "Neu".
Variablenname: ~
Variablenwert: Klicken Sie auf die Schaltfläche "Verzeichnis durchsuchen ..." und wählen Sie das gewünschte Verzeichnis aus.

Öffnen Sie anschließend cmd und geben Sie Folgendes ein:
cd% ~%
. Es klappt.

hkaraoglu
quelle
2

Ich habe es gerade versucht set ~=%userprofile%und das funktioniert auch, wenn Sie die gleiche Gewohnheit beibehalten möchten

Sie können dann %~%stattdessen verwenden.

Mark Richer
quelle
2
Wie setzen Sie den Wert von ~= genau %userprofile%? Ich habe den genauen Befehl ausgeführt, der in Ihrem Beitrag an der Eingabeaufforderung erwähnt wurde, aber es wird ein Fehler ausgegeben - '~' is not recognized as an internal or external command, operable program or batch file.. Können Sie bitte Ihre Antwort etwas näher erläutern?
RBT
3
Wenn Sie verwenden set ~=%userprofile%, können Sie %~%für die Variable verwenden
forresthopkinsa
0

Gerade schrieb ein Skript dies ohne zu viel Tipparbeit zu tun , während Portabilität als Einstellung beibehalten ~werden %userprofile%Bedürfnisse eine manuelle Einrichtung auf jedem Windows - PC , während das Klonen und das Verzeichnis als Teil der Einstellung PATHist mechanisch.

https://github.com/yxliang01/Snippets/blob/master/windows/

Fritten
quelle
0

Einfach

Zuerst Pfad definieren

doskey ~=cd %homepath%

Dann Zugriff

~
Matee Gojra
quelle
-5

Sie können cd ...... \ auch so oft ausführen, wie es Ordner gibt, die Sie zum Ausgangsverzeichnis führen. Wenn Sie sich beispielsweise in cd: \ windows \ syatem32 befinden, bringt Sie cd .... \ nach Hause, dh c: \

Samvatsar
quelle
2
home! = c: \ Stattdessen fragt Original Poster nach dem C:\Users\usernameOrdner (oder c:\Documents and Settings\usernamein früheren Windows)
v.karbovnichy
Selbst wenn Sie zur Wurzel gehen wollten, C:\ ist es eher ratsam, cd \ anstelle einer undefinierten Anzahl voncd ..\..\..
lcnittl