Was ist das Äquivalent von Linuxs "~" (Tilde) in Windows?

72

Unter Linux können wir zum Benutzer nach Hause gehen, indem wir das ~Zeichen tilde ( ) eingeben, nachdem cd:

cd ~

Wie mache ich das gleiche in Windows?

Jedes Mal muss ich Folgendes eingeben:

cd C:\Document and Settings\freewind

Das ist zu langweilig.

Freewind
quelle
2
Ziehen Sie die Verwendung von Cygwin in Betracht?
Paul R
8
Tatsächlich ist '~' die Standardeinstellung für 'cd' unter den meisten Linux-Shells. Nur 'cd' würde ausreichen, um zu Ihrem Homedir zu gehen
@Arnout: Siehe stackoverflow.com/questions/998626/…
abatishchev
4
Die Antwort lautet einfach "cd ~". Das heißt, Sie können den gleichen Befehl auch in Windows verwenden. Sie sollten diesen Befehl jedoch nicht in CMD ausprobieren, da er veraltet ist und von Microsoft nicht mehr weiterentwickelt wird. Verwenden Sie "Windows PowerShell" und der gleiche Befehl wird reibungslos funktionieren.
Apple II
3
PowerShell wird mit Win7 + ausgeliefert
Isaac Dontje Lindell 16.01.13

Antworten:

43

cd /d "%HOMEDRIVE%%HOMEPATH%" würde es tun - aber ich bin nicht sicher, ob Sie es für eine Verbesserung halten.

Sie können auch einen Alias ​​für den obigen Befehl definieren:

doskey cdhome=cd /d "%HOMEDRIVE%%HOMEPATH%"

Danach ist es einfach cdhome.

Jon
quelle
4
@Freewind: Du musst die Standard-Windows-Shell lieben.
Jon
10
@ Abatishchev: Gute Frage. Diese Frage zu SF scheint darauf hinzudeuten, dass% USERPROFILE% vorzuziehen ist.
Jon
3
Sie können anstelle von cdhome auch cd ~ als Makronamen verwenden.
Jftuga
3
@abatishchev: An Windows NT-Konten kann ein Pfad "Basisverzeichnis" angehängt werden, der vom "Profilverzeichnis" getrennt ist. Das Profil hält Ihre Einstellungen (Registry), Anwendungsdaten und dergleichen. Das Home-Verzeichnis hingegen ist für Ihre eigenen Dateien bestimmt. Wenn ein Programm zum ersten Mal den Dialog "Öffnen / Speichern" anzeigt, wird es im Home-Verzeichnis gestartet. (Windows 95/98 hat es etwas anders verwendet. Ich kann mich nicht an die Details erinnern.) Dies ist in Active Directory-Umgebungen nützlich, um Dateien auf einer Netzwerkfreigabe zu speichern, aber das Profil lokal zu halten.
Grawity
2
@jftuga: Oder auch ~.
Grawity
62

Sie können verwenden, cd /d %USERPROFILE%wenn Sie cmd verwenden.

oder Sie können verwenden, cd ~wenn Sie PowerShell verwenden.

Nocturn
quelle
4
+1, sondern auch Anführungszeichen um die Variable (vielleicht ist es c:\documents and settings\..., die Leerzeichen werden es brechen, wenn es nicht in Anführungszeichen steht)
Jon
7
@ Jon: cdist eine Ausnahme. Da es sich immer um ein einziges Argument handelt, ist keine Angabe erforderlich. (Windows, Programme und Einbauten müssen ihre Kommandozeile selbst analysieren, wird die Shell es nicht.) Immer zitiert Pfade ist eine gute Praxis, aber.
Grawity
1
@barlop: normalerweise CommandLineToArgvW () ; Die CLR / MinGW / Cygwin-Laufzeiten verwenden ebenfalls automatisch ihre eigenen Entsprechungen, bevor sie main () aufrufen. Einige Programme haben jedoch Parser, die vollständig von Grund auf neu geschrieben wurden, zum Beispiel sich cmd.exeselbst und seine verrückten /c.
Grawity
1
@barlop: Nicht, wenn Sie versuchen, Anführungszeichen (oder Umleitungen) als Teil des angegebenen Befehls zu verwenden. Ist es /c "C:\foo bar\baz" "my file.txt"oder /c "\"C:\foo bar\baz\" \"my file.txt\""oder /c ""C:\foo bar\baz" "my file.txt""? Was noch schlimmer ist, ist, dass das Parsen davon abhängt, ob /szuvor angegeben wurde, ob Sonderzeichen vorhanden sind, ob die ausführbare Datei benannt ist C:\foo bar\bazoder nur C:\foo...
grawity
1
@TheLQ Ein Batch-Skript ist noch einfacher. Ich kann das gleiche Ergebnis erzielen, indem ich ein einzelnes Zeichen eingebe. Siehe meine Antwort unten für eine Beschreibung.
weberc2
13

Eine Möglichkeit besteht darin, den substBefehl an einer Eingabeaufforderung zu verwenden:

subst z: C:\Document and Settings\freewind

Jedes Mal, wenn Sie zu Laufwerk Z: navigieren, wird Ihr Benutzerordner angezeigt.

Der Nachteil ist, dass Sie es jedes Mal ausführen müssen, wenn Sie sich anmelden. Ich habe eine Batch-Datei verwendet und sie einfach in meinen Startordner gelegt, aber es gibt wahrscheinlich elegantere Lösungen dafür.

Der Vorteil ist, dass es im Gegensatz zu einem Doskey-Alias ​​universell funktioniert (Windows Explorer, Dialogfeld zum Durchsuchen usw.), nicht nur beim Wechseln von Verzeichnissen an der Eingabeaufforderung. Dies ist besonders hilfreich für alte Programme mit alten Dialogfeldern zum Durchsuchen, die Laufwerksbuchstaben auf der obersten Ebene anstelle von "Desktop" haben.

mo.
quelle
Sie können ein Laufwerk zuordnen und nach der Anmeldung automatisch neu zuordnen. Keine Notwendigkeit, subst
phuclv 29.06.15
1
@ LưuVĩnhPhúc Es mag nicht ganz logisch sein, aber ich vermeide Windows-Netzwerkfreigaben, es sei denn, ich muss sie wirklich verwenden. Ich denke, Leistung und Zuverlässigkeit sind ... unvorhersehbar? Auf jeden Fall, wenn Sie eine Alternative haben, oder besser, schreiben Sie diese bitte in einer eigenen Antwort zum Nutzen aller :)
mo.
6

Du kannst das:

cd %homepath%
Bali C
quelle
5
Dies wird E:unterbrochen , wenn Sie sich auf einem anderen Laufwerk befinden - z. B. wenn Sie sich auf einem anderen Laufwerk befinden und Ihr Homedir eingeschaltet istC:
Piskvor,
4

Sie können eine Stapeldatei mit dem Namen ~.batcontain erstellen

@echo off
cd /d %USERPROFILE%

Und füge es deiner PATH-Variablen hinzu (Start -> [Rechtsklick auf "Computer"] -> Eigenschaften -> "Erweiterte Systemeinstellungen" [in der linken Spalte] -> "Umgebungsvariablen"

Bearbeiten Sie von dort aus einfach Ihre PATH-Variable, um den Ordner einzuschließen, der Ihre ~.batDatei enthält. (Auf diese Weise können Sie Ihr Skript von überall aus aufrufen, indem Sie nur den Dateinamen und nicht den absoluten Pfad zur Datei verwenden.)

Stellen Sie außerdem sicher, dass Ihre PATHEXTUmgebungsvariable .BATirgendwo enthält (dies ermöglicht es Ihnen, ~anstelle von einzugeben ~.bat).

Wenn Sie es verwenden müssen, geben Sie es einfach ~an der Eingabeaufforderung ein. Diese Lösung ist beständig - Sie müssen sie nicht jedes Mal einrichten, wenn Sie eine Shell starten, und Sie müssen Ihre Registrierung nicht hacken.

weberc2
quelle
2

Leider kenne ich keine perfekte Lösung, aber es gibt ein paar hackige Optionen:

Option 1: Setzen Sie ~ als Befehlsalias für doskey

doskey ~=cd /d %USERPROFILE%

Auf diese Weise können Sie einfach ~chdir eingeben und an Ihr Homedir senden.

C:\>~
C:\Users\a>

Dies verkürzt natürlich die Anzahl der Tastenanschläge, die nach Hause kommen (sogar im Vergleich zu Linux), ist jedoch weniger robust, da Sie es nicht wirklich als Teil eines anderen Pfades verwenden oder viel damit tun können, als nur nach Hause zu gehen.

Option 2: Setze ~ als Variable

Eine andere Option, wenn Sie eine robustere Option wünschen, ist das Festlegen einer Variable:

set ~="%USERPROFILE%"

aber mit diesem würde verwendet werden, wie:

E:\>cd /d %~%
C:\Users\a>

Es kann auch in die meisten Pfade injiziert werden und beschränkt sich nicht darauf, einfach nach Hause zu gehen.

Beide Möglichkeiten gleichzeitig

Sie können auch beide Methoden gleichzeitig implementieren. Wenn Sie die% 's haben, wird die Variable verwendet - andernfalls wird sie ~als Befehl behandelt.

C:\>:: ECHO (display) THE VALUE OF %~%
C:\>echo %~%
C:\Users\a

C:\>:: ChDir to ~\DESKTOP
C:\>cd /d %~%\Desktop

C:\Users\a\Desktop>:: USE THE ~ COMMAND
C:\Users\a\Desktop>~

C:\Users\a>

Ein weiterer Tipp (irgendwie verwandt):

Es ist weniger wahrscheinlich, dass dies auf einem Firmencomputer, zumindest auf Ihrem Heim-PC, akzeptabel ist, um zusätzliche Tastenanschläge zu speichern. Es ist keine schlechte Idee, Ihr %USERPROFILE%Verzeichnis zu einem einfachen Namen zu machen . Wie Sie meinen obigen Beispielen C:\Users\aentnehmen können, lautet mein Benutzerverzeichnis - ich hatte immer 'aplocher' oder 'adamp' und als ich zu einem einzelnen Buchstaben gewechselt habe, war es magisch.

Adam Plocher
quelle
1

In Powershell %variable%funktioniert die Syntax nicht. Du kannst das :

cd $env:USERPROFILE
Elzo
quelle
2
Sie können cd ~in PowerShell verwenden.
wjandrea
0

Mit PowerShell können Sie mithilfe der folgenden Methode von einem beliebigen Ort aus in Verzeichnissen navigieren, sofern Sie Ihren Benutzernamen kennen und über Dateiverzeichnisberechtigungen verfügen.

cd \..\Users\yourUserName\Documents
cd \..\Users\yourUserName\Downloads
cd \..\Users\yourUserName\Desktop
cd \..\Users\yourUserName\music

Siehe Beispiel unten in PowerShell (64 Bit). Ich habe dies auf einer Windows 7 Pro 64bit Box getestet.

Linux Lilde-Äquivalent unter Windows 7 Pro 64 Bit

Volles Array
quelle