Verzeichnisverknüpfung für Windows-Konsole

473
Dawid Ferenczy

Ich möchte eine Verknüpfung zu einem Verzeichnis erstellen , das ich mit einem cdBefehl in der Windows-Konsole verwenden kann . Also erstelle ich einen symbolischen Link für ein Verzeichnis:

mklink /D link_name c:\some\path 

/Dist für einen symbolischen Link eines Verzeichnisses (Standard ist ein symbolischer Link einer Datei )

Sagen wir, ich geschaffen habe den Link link_nameHome - Verzeichnis mein Benutzers in: c:\Users\user\link_name.

Ich kann diesen Link dann mit dem cdBefehl verwenden:

c:\Users\user> cd link_name c:\Users\user\link_name> 

Das einzige Problem ist der resultierende Pfad. Ich muss einfach den resultierenden Pfad mit dem Ziel des symbolischen Links vergleichen, dh c:\some\pathaus meinem Beispiel, aber c:\Users\user\link_namestattdessen.

Die symbolische Verknüpfung des Verzeichnisses ist also eher ein Verzeichnisalias als eine Verknüpfung .

Was ich brauche:

c:\Users\user> cd link_name c:\some\path> cd .. c:\some> 

Wie der symbolische Link des Verzeichnisses tatsächlich funktioniert:

c:\Users\user> cd link_name c:\Users\user\link_name> cd .. c:\Users\user> 

Gibt es eine Möglichkeit, das zu erreichen, was ich brauche? Ich bevorzuge ein Dateisystemobjekt der Definition einer Umgebungsvariablen usw.

0

1 Antwort auf die Frage

2
LPChip

So funktioniert ein symbolischer Link nicht.

Was Sie tun möchten, ist nicht direkt möglich, aber es gibt Methoden, die ähnlich sind.

Beispielsweise können Sie eine .cmd-Datei in diesem Ordner ablegen, die den Ordner in den neuen ändert, und Sie geben dann den Namen der .cmd-Datei ein, um in den anderen Ordner zu wechseln. Wenn Sie diese .cmd-Datei in einem Ordner speichern, der auch in der Umgebungsvariablen% PATH% aufgeführt ist, können Sie den Namen dieses Cmds an einer beliebigen Stelle eingeben, um ihn an diesen neuen Ordner weiterzuleiten.

Die .cmd würde einfach den Befehl cd enthalten. Beispiel:

::cd_link_name.cmd cd /d c:\some\path 

Der Nachteil ist, dass diesem Link kein Programm folgen wird.

Wenn Sie möchten, dass ein Programm dem Link folgt, benötigen Sie wirklich mklink, um eine Junction zu erstellen. Ja, das bedeutet, dass sich der virtuelle Ordner für das System an dem Ort der Junction befindet, der aber tatsächlich umgeleitet wird. Daran führt einfach kein Weg vorbei.

Wenn Sie nur in der Lage sind, schnell in den Favoritenordnern von der Befehlszeile aus zu navigieren, sollten Sie eine globale Batchdatei schreiben, die Sie an einem Ort speichern, der in% PATH% angegeben ist, und den Ordner für Sie ändern lassen.

Ein Beispiel für eine solche cmd-Datei wäre:

:: cdf.cmd @echo off  :: lets see if the first parameter is recognized. If so, change folder. :: note, you can't use spaces in these identifiers, but you can keep them :: short and to the point.  :: c forwards to c:\ if "%1"=="c" cd /d c:\  :: desk forwards to your Desktop folder if "%1"=="desk" cd /d %USERPROFILE%\desktop  ::docs forwards to your My Documents folder  if "%1"=="docs" cd /d %USERPROFILE%\Documents  ::a1 forwards to e:\some\path\special if "%1"=="a1" cd /d e:\some\path\special 

und so weiter....

Du kannst das:

C:\Windows\System32>cdf a1  E:\Some\Path\Special>cdf desk  C:\Users\Username\Desktop>_ 

Übrigens, ich nannte es cdf für: Verzeichnis-Favoriten ändern. :) Aber jeder Name reicht natürlich aus.

Falls ein doppelt zitiertes Argument übergeben wird oder ein anderes Gehäuse verwendet wird, sollten Sie immer `if / i"% ~ 1 "== ...` verwenden LotPings vor 6 Jahren 1