Relative Pfade für Windows-Verknüpfungen verwenden


49

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 untergeordneten Ordnern "Neue Dateien" zu den untergeordneten Ordnern "Getestete Dateien" haben. Dieser Ordner kann jedoch von Zeit zu Zeit verschoben werden, wodurch die Verknüpfungen unterbrochen werden.

Gibt es eine Möglichkeit, eine relative Verknüpfung zu jedem Ordner herzustellen? Ich erinnere mich, dass ich dies in HTML getan habe, wo Sie einen Pfad festlegen konnten .../Files, um zu einem übergeordneten Ordner und dann zu einem neuen Ordner zurückzukehren, aber ich bin mir nicht sicher, ob dies unter Windows-Verknüpfungen unterstützt wird.

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


1
Hast du es ../Filesmit zwei Punkten versucht ? Ich verwende kein Windows, aber ich denke, es könnte funktionieren.
Brian Z

1
Das ist das erste, was ich versucht habe, danke. :(
Gary Morris


@ sancho.s - AFAIK, die Antworten dort funktionieren nur für die Ausführung von .bat-Dateien. Was hier benötigt wird, ist eine Möglichkeit, stattdessen auf einen Ordner zu verweisen.
ToolmakerSteve

@ToolmakerSteve - Ich denke, Sie haben "die Antworten dort" nur oberflächlich überprüft / gelesen. Eine davon ( stackoverflow.com/a/1751350/2707864 ) ist hier die akzeptierte Lösung. 4 Jahre älter. Ich habe es nicht ausprobiert. Eine andere ( stackoverflow.com/a/29261618/2707864 ) ist die zweite Hälfte der hier akzeptierten Lösung. Sie haben diesen sogar kommentiert. Ich habe es versucht und es funktioniert. Um einen Kommentar abzugeben, muss man nicht gründlich sein, aber man sollte versuchen, die Leser nicht irrezuführen.
sancho.s

Antworten:


50

Sie können dieses Dienstprogramm verwenden: Relativ .

Es wird im Grunde eine Verknüpfung zu "explorer.exe" mit dem Parameter Ihres relativen Pfads mit einem Rechtsklick erstellt (genauso wie Sie eine normale Verknüpfung erstellen).

Natürlich können Sie dies manuell tun.
In Ihrem Beispiel würden Sie unter "Neue Dateien \ Tools" eine Verknüpfung zu erstellen

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

Sie können dafür das gewohnte Kontextmenü "Neu / Verknüpfung erstellen" von Windows verwenden und den obigen Befehl in das Feld "Position des Elements eingeben" eingeben.


Ich habe in meinen früheren Recherchen darüber gelesen, aber ich hoffte auf eine native Lösung innerhalb von Explorer. Dies wird jedoch mein Backup-Plan sein, Prost.
Gary Morris

Bleibt dieser relative Pfad übrigens auch zwischen den Systemen derselbe? Oder muss Relative installiert werden, wenn ich die Ordner / Inhalte zwischen verschiedenen Systemen verschiebe?
Gary Morris

3
"Relative" erstellt die Verknüpfung nur mit der Standarddatei "% windir% \ explorer.exe", sodass Sie Relative auf dem anderen System nicht benötigen. Dies entspricht dem Eingeben %windir%\explorer.exevor dem relativen Pfad, während eine Standardverknüpfung erstellt wird. Wenn Sie dies also manuell tun, benötigen Sie Relative überhaupt nicht. (Sie müssen sich nur den Befehl vor Ihrem relativen Pfad merken)
Rik

Entschuldigung, ich habe diesen Teil Ihrer ersten Antwort falsch verstanden, meine schlechte! Vielen Dank!
Gary Morris

2
Die manuelle Lösung hier funktioniert bei mir nicht sofort. Außerdem muss ich "Start In" von %windir%in leer ändern .
notan3xit

30

Eine mögliche Lösung ist die Verwendung einer einzeiligen Batch-Datei anstelle einer Abkürzung, um das zu öffnen, was Sie öffnen möchten. In der Stapeldatei können Sie relative Pfade in sich selbst verwenden und ein Arbeitsverzeichnis für den Ordner haben, in dem sich die Stapeldatei befindet.


Eine andere Möglichkeit ist, die Verknüpfung cmd.exemit dem zu starten, was Sie starten, und als Argument zu übergeben, was auch immer Sie startencmd.exe

Bildbeschreibung hier eingeben

%COMSPEC%ist eine Umgebungsvariable , die standardmäßig auf die Eingabeaufforderung verweist .

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


Vielen Dank! Das hat bei mir funktioniert. Ich habe stundenlang versucht, meine Verknüpfung dazu zu bringen, ein Power-Shell-Skript im selben Verzeichnis auszuführen.
Shervin Shahrdar

Nützlich für eine andere Situation, es geht jedoch nicht darum, eine Datei zu öffnen . Es geht darum, in Windows Explorer zu einem bestimmten Ordner springen zu können. Gibt es eine Möglichkeit, diese Antwort anzupassen, um dies zu tun?
ToolmakerSteve

7

Dieser Trick funktioniert:

% COMSPEC% / C startet "Ihren exe Namen ohne Pfad"

Beispiel

% COMSPEC% / C starten winmine.exe


2
Bitte lesen Sie die Frage noch einmal sorgfältig durch. Ihre Antwort beantwortet nicht die ursprüngliche Frage.
DavidPostill

1
Für Win10 1607 beantwortet diese Lösung die Frage des OP perfekt: Ziel: %COMSPEC% /C "start GoogleChromePortable.exe -enableextensions -incognito"Start In: [leer lassen]
semtex41

@ semtex41 Huh? Ich versuche das, und das Ergebnis ist ein Fehlerdialog mit der Meldung "Windows kann 'GoogleChromePortable' nicht finden. Was hat das mit dem Ziel von OP zu tun, den Windows Explorer in einen bestimmten Ordner zu navigieren?
ToolmakerSteve

@ToolmakerSteve Nun, der Titel lautet "Relative Pfade für Windows-Verknüpfungen verwenden" und ich habe zu einer zuvor bereitgestellten Antwort beigetragen. Das Ziel des OP ist es, die Pfade dynamisch und statisch zu gestalten. Da meine Antwort darin besteht, wie ich eine Verknüpfung erstellt habe, die in einem nicht statischen Pfad ausgeführt wird, glaube ich, dass meine Antwort passt.
Semtex41

Das erklärte Ziel von @ semtex41-OP ist ".. eine Verknüpfung .. zum untergeordneten Ordner" Tested Files "". Wenn Sie nicht zu erklären , wie diese Antwort haben , dass zu erreichen, dann bitte klären , was Sie wurden auf die Antwort hinzufügen. Es sieht so aus, als hätten Sie gerade ein weiteres Beispiel für die Ausführung einer EXE-Datei gegeben. Aber die Antwort zeigte bereits ein solches Beispiel. Geben Sie den Punkt, den Sie angesprochen haben, noch einmal an.
ToolmakerSteve

6

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

Bildbeschreibung hier eingeben

Ich kann Argumente an mein Fledermausskript übergeben und so weiter, das ist cool. Stellen Sie sicher, /cArgument nach zu setzencmd.exe


2

Sie können mklink verwenden . Hier können Sie symbolische Links, Hardlinks 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 sich in der gesamten Struktur zu bewegen, sollten Sie den Befehl xcopy verwenden . Wenn sich beispielsweise die gesamte Struktur unter dem Container befindet :

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

Befehl eingeben

 copy /b /e container container2

erstellt die folgende Struktur:

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

Die Option / b kopiert die symbolischen Links, anstatt sie in Ordner zu konvertieren.


Aber ist dieser Link immer noch korrekt, wenn die Ordner an einen anderen Ort verschoben werden?
ToolmakerSteve

Dies erfordert Berechtigungen, die ich nicht habe, obwohl es so aussieht, als würde es die Arbeit erledigen.
sancho.s

Die Links sind in der Tat richtig. Dies kann mit dem Befehl "dir" bestätigt werden. Das Problem ist, dass die Aktionen "Kopieren-Einfügen", "Verschieben" und "Kopieren" des Dateimanagers die Struktur zerstören. Ich habe die Antwort geändert, um eine Problemumgehung einzuschließen.
Krauss

1

Eine Verknüpfung kann die Position in einer Variablen aufzeichnen und einen Befehl mit der Variablen aufrufen. Erstellen Sie beispielsweise die Verknüpfung "Großeltern" mit 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%

Egal in welchem ​​Ordner sich Grandparent befindet, wenn Sie darauf klicken, wird der übergeordnete Ordner des übergeordneten Ordners geöffnet. Es funktioniert sogar mit Großeltern in einem Stammverzeichnis.

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

Auf meinem System scheint Großeltern mit & oder && zu arbeiten.


1
&&Führt den nächsten Aufruf nur aus, wenn der vorherige Aufruf keinen Fehler zurückgegeben hat, obwohl es &das egal ist. In diesem Fall sollte es keinen Unterschied geben.
Leewz


0

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

Beispiel:

  • Umgebungsvariable:

    % Dropbox% = "C: \ Benutzer \ Benutzer 1 \ Dropbox"

  • Verknüpfungsziel:

    "% Dropbox% \ Install \ Utilities \ File.exe"

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.