2013-09-12 14:49:06 +0000 2013-09-12 14:49:06 +0000
53
53

Verwendung relativer Pfade für Windows-Verknüpfungen

Ich habe ein Ordnerschema wie (stark vereinfachte Version):

New Files
 >Tools
 >Scripts
Tested Files
 >Tools
 >Scripts

… und ich möchte in jedem Ordner eine Verknüpfung von den “Neue Dateien”-Unterordnern zum “Getestete Dateien”-Unterordner haben. Aber dieser Ordner kann von Zeit zu Zeit verschoben werden, was die besagten Verknüpfungen zerstören würde.

Gibt es eine Möglichkeit, für jeden Ordner eine relative Verknüpfung zu erstellen? Ich erinnere mich, dass man das in HTML machen konnte, wo man einen Pfad setzen konnte, etwas in der Art von .../Files, um zu einem übergeordneten und dann zu einem neuen Ordner zu gehen, aber ich bin mir nicht sicher, ob das etwas ist, was unter Windows-Verknüpfungen unterstützt wird?

PS: Der Fall von ähnlich relativen Verknüpfungen, wenn das Ziel eine Datei ist, wird in https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the-folder-is behandelt. Im vorliegenden Fall ist das Ziel ein Ordner.

Antworten (8)

53
53
53
2013-09-12 15:08:36 +0000

Sie können dieses Dienstprogramm verwenden: Relativ .

Es erstellt im Grunde eine Verknüpfung zu “explorer.exe” mit dem Parameter Ihres relativen Pfades mit einem Rechtsklick (so wie Sie eine normale Verknüpfung erstellen).

Sie können dies natürlich auch manuell tun.
In Ihrem Beispiel würden Sie in “Neue Dateien\Tools” eine Verknüpfung zu

%windir%\explorer.exe "..\..\Tested Files\Tools"

erstellen. Sie können dazu das übliche Kontextmenü “Neu/Verknüpfung erstellen” von Windows verwenden und den obigen Befehl in das Feld “Geben Sie den Ort des Elements ein” eingeben.

31
31
31
2013-09-12 15:45:43 +0000

Eine mögliche Lösung ist die Verwendung einer einzeiligen Stapeldatei anstelle einer Verknüpfung, um das zu öffnen, was Sie öffnen wollten. Die Stapeldatei ermöglicht die Verwendung relativer Pfade innerhalb ihrer selbst und hat ein Arbeitsverzeichnis des Ordners, in dem sich die Stapeldatei befindet.


Eine andere Möglichkeit ist, die Verknüpfung mit dem zu startenden Programm mit cmd.exe zu starten und das zu startende Programm als Argument an cmd.exe

%COMSPEC% zu übergeben.

/C bewirkt, dass sich die Konsole nach Ausführung des Befehls selbst schließt.

7
7
7
2014-05-12 01:21:58 +0000

Ich verwende eine ähnliche Lösung in einer Vorlage, die meine Webentwicklungsumgebung ausführt (Projektverzeichnis öffnen, Browser öffnen, WAMP ausführen, SCSS ausführen…)

Ich kann Argumente an mein Bat-Skript übergeben usw., das ist cool. Stellen Sie sicher, dass Sie das Argument /c nach cmd.exe setzen

6
6
6
2016-08-18 16:47:41 +0000

Dieser Trick funktioniert :

%COMSPEC% /C start“Ihr Exe-Name ohne Pfad”

Beispiel

%COMSPEC% /C start winmine.exe

4
4
4
2016-08-30 08:19:38 +0000

Sie können mklink verwenden. Damit können Sie symbolische Links, harte Links und Verzeichnislinks erstellen.

mklink /d Tools "..\Tested Files\Tools" (elevated command prompt)

Wenn es keinen erhöhten Zugriff gibt, können Sie /j verwenden

mklink /j Tools "..\Tested Files\Tools"

Um die gesamte Struktur zu verschieben, sollten Sie den Befehl xcopy verwenden. Zum Beispiel, wenn die gesamte Struktur unter container liegt:

container
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools [..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

Die Eingabe des Befehls

xcopy /b /e container container2

wird die folgende Struktur erzeugen:

container2
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools [..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

Mit dem Schalter /b werden die Symbolischen Links kopiert, anstatt sie in Ordner umzuwandeln. (Beachten Sie, dass /b eine völlig andere Bedeutung für den Befehl copy hat)

1
1
1
2015-09-26 02:33:10 +0000

Eine Verknüpfung kann ihre Position in einer Variablen aufzeichnen und einen Befehl über die Variable aufrufen. Erstellen Sie z. B. die Verknüpfung “Grandparent” mit dem Ziel:

%windir%\system32\cmd.exe /c set HERE="%CD%" && "C:\Here.bat"

Erstellen Sie die Batch-Datei “C:\Here.bat” mit der einzelnen Zeile:

@%windir%\explorer.exe /n,/select, %HERE%

Nun wird, egal in welchem Ordner sich Grandparent befindet, wenn Sie darauf klicken, der übergeordnete Ordner geöffnet. Es funktioniert sogar mit Grandparent in einem Stammverzeichnis.

Ihre Batch-Datei könnte %HERE% verwendet haben, um etwas anderes als explorer.exe zu starten. Oder Sie könnten anstelle von Here.bat nach dem && im Verknüpfungsziel ein Programm aufrufen, das %HERE% verwendet.

Auf meinem System scheint Grandparent mit & oder && zu funktionieren.

1
1
1
2016-01-01 08:42:40 +0000

Wenn Sie das Feld 'Start In' in den Eigenschaften der Verknüpfung leer lassen, sind die Links relativ zum aktuellen Arbeitsverzeichnis.

Siehe auch https://stackoverflow.com/a/17951772/40961

0
0
0
2019-06-20 16:48:10 +0000

Sie können eine Umgebungsvariable erstellen, die den (relativen) Pfad zum Zielordner oder einem darüber liegenden Ordner in der Dateisystemstruktur enthält.

Beispiel:

  • Umgebungsvariable:

  • Verknüpfungsziel:

Sie können den DOS-Befehl SETX verwenden, um Umgebungsvariablen zu erstellen.