it-swarm.com.de

Eine Windows-Verknüpfung relativ zum Ordner erstellen?

Ich habe ein Spiel, das diese Dateistruktur verwendet:

GAME FOLDER
->data
->data->run.bat

Ich möchte eine Verknüpfung zu run.bat in GAME FOLDER setzen, aber wenn ich es verschiebe oder jemand anderes es installiert, funktioniert es nicht, weil das Ziel falsch ist. Gibt es eine Möglichkeit, das Ziel zu machen und relativ zu GAME FOLDER "anzufangen"?

55
William

Schritt 1:

Klicken Sie mit der rechten Maustaste auf Ihr/bat/-Ordner und klicken Sie auf Verknüpfung erstellen .

Unter Windows 7 erhalten Sie bat - Shortcut im aktuellen Verzeichnis.

Unter Windows XP erhalten Sie Shortcut to bat.

Schritt 2:

Klicken Sie mit der rechten Maustaste auf die gerade erstellte Verknüpfung und klicken Sie auf Eigenschaften .

Ändern Sie Ziel (unter der Registerkarte Verknüpfung unter Windows 7) in Folgendes:

%windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat"

OK klicken. Unter Windows 7 ändert sich das Verknüpfungssymbol in das Symbol cmd.exe. Dies ist bei Verknüpfungen zu einer .bat-Datei wahrscheinlich akzeptabel. Wenn Sie das Symbol jedoch ändern möchten, öffnen Sie die Eigenschaften der Verknüpfung erneut und klicken Sie auf Symbol ändern ... (erneut unter dem Symbol) Registerkarte Verknüpfung unter Windows 7). An dieser Stelle können Sie Durchsuchen ... nach einem Symbol suchen oder durch Eingabe eine Liste der Standard-Systemsymbole aufrufen

%SystemRoot%\system32\Shell32.dll

links neben der Schaltfläche Browse... und drücken Enter. Dies funktioniert unter Windows 7 und Windows XP, die Symbole unterscheiden sich jedoch aufgrund von Stilaktualisierungen (sind jedoch erkennbar ähnlich). Je nach Windows-Version befindet sich die Verknüpfung auf dem Symbol werden wird manchmal entsprechend ändern.

Weitere Informationen:

Siehe Verwenden des Befehls "start" mit Parametern, die an das gestartete Programm übergeben werden , um die leeren Anführungszeichen am Anfang des ersten Befehls Target besser zu verstehen.

63
leoj

Laut Microsoft wird das Skript im aktuellen Arbeitsverzeichnis ausgeführt, wenn Sie das Feld 'Start In' leer lassen. Ich habe dies in Windows 7 ausprobiert und es scheint gut zu funktionieren.

Quelle: http://support.Microsoft.com/kb/283065

29
Bob Pollack

Versuchen Sie es mit Relative (einer Windows-Befehlszeilenanwendung).

Grundsätzlich könnte eine Verknüpfung eine relative Verknüpfung haben, aber Windows gibt keine Möglichkeit, eine Verknüpfung zu erstellen.

7
TimDC

Wenn Sie eine Systemvariable (z. B.% MyGameFolder%) festlegen können, können Sie diese in Ihren Pfaden und Verknüpfungen verwenden. Windows wird den Rest des Pfads für Sie angeben (dh %MyGameFolder%\data\MyGame.exe).

Hier ist eine kleine Grundierung . Sie können diesen Wert entweder über eine Batchdatei festlegen, oder Sie können ihn wahrscheinlich programmgesteuert festlegen, wenn Sie mit anderen teilen, wie Sie die Verknüpfung erstellen möchten.

4
SqlRyan

Sie können eine relative Verknüpfung manuell erstellen, indem Sie den Dateipfad ändern .. _. Zuerst erstellen Sie im üblichen Kontextmenü eine neue Windows-Verknüpfung für Ihre Datei und in den Eigenschaften -> Speicherort Ihrer Datei: 

%windir%\Explorer.exe "..\data\run.bat"

3
Charles P.

Ich mag leoj3ns Lösung . Es kann auch verwendet werden, um ein relatives "start in" -Verzeichnis festzulegen, das ich mit dem/D-Parameter von start brauchte. Ohne/c oder/k als Argument für cmd wird der nachfolgende Startbefehl nicht ausgeführt./c schließt die Shell unmittelbar nach Ausführung des Befehls und/k hält sie offen (auch nachdem der Befehl ausgeführt wurde). Wenn also alles, was Sie ausführen, standardmäßig ausspuckt und Sie es sehen müssen, verwenden Sie/k.

Gemäß der lnk-Datei spezifikation wird das Symbol leider nicht in der Verknüpfung gespeichert, sondern "mit Umgebungsvariablen codiert". Dadurch kann das Symbol auf Computern gefunden werden, auf denen sich die Positionen unterscheiden, die jedoch mit Umgebungsvariablen ausgedrückt werden . " Wenn sich also die Pfade ändern und Sie versuchen, das Symbol aus der ausführbaren Datei zu nehmen, auf die Sie zeigen, wird es nicht korrekt übertragen.

3
darda

Nachdem Sie die Verknüpfung erstellt haben, legen Sie in den Eigenschaften Folgendes fest:

Ziel: %comspec% /k "data\run.bat"

  • Löschen Sie den /k, wenn die Eingabeaufforderung nach dem Ausführen nicht geöffnet bleiben soll.

Start in: %cd%\data

1
John Thow

Nachdem ich einige Antworten gelesen hatte, entschied ich mich dazu, es mit einer einfachen Lösung zu tun: Anstelle einer Abkürzung erstellte ich eine .bat mit nur einer Zeile, um die main .bat aufzurufen, und es funktioniert wie ich wollte.

1
Alexis B.

Ich bin nicht sicher, ob ich Recht habe oder mir fehlt etwas, aber für jetzt (2016-07-11, mit Win7 Enterprise SP1) passt sich eine LNK-Datei an, wenn der Laufwerkbuchstabe verschoben oder sogar geändert wird an einem neuen Ort laufen! Ich erstellte eine neue Verknüpfung auf meinem USB-Laufwerk und versuchte, die Verknüpfung und ihr Ziel so zu verschieben, dass die relative Position unverändert blieb. Dann änderte ich den Laufwerksbuchstaben. Die Verknüpfung funktionierte in beiden Fällen und das Zielfeld wurde angepasst, nachdem ich darauf geklickt hatte.

Offenbar hat Microsoft dieses Problem in einem der letzten Updates behoben.

Bitte bestätigen Sie dies.

1
Mehrdad Mirreza

Einfachste Lösung:> Umgebungsvariablen Handliche kleine Lebewesen. 

Wenn die andere Person installieren oder dekomprimieren soll, egal wo auf ihrem jeweiligen Systemlaufwerk (normalerweise c :).

Rufen Sie zu Demonstrationszwecken unsere App "test.exe" auf (möglicherweise muss jede ausführbare Datei/Datei nicht exe sein) und sie muss im Ordner MYCOMPANY\MYAPP\installiert/dekomprimiert werden.

Dann machen Sie einfach eine Verknüpfung, die% SystemDrive%\MYCOMPANY\MYAPP\test.exe als Ziel und .__ verwendet. % SystemDrive%\MYCOMPANY\MYAPP\as start in.

Sie möchten es jetzt bereitstellen. Verwenden Sie eine App wie "WinRAR".

Der einfache Weg ist die Verwendung einer selbstentpackenden Zip-Datei, die ordentlich als ".exe" .__ verpackt ist. Ich würde eine für meine Verknüpfung und eine andere für die App verwenden. Es gibt Möglichkeiten, eine selbstentpackende Zip-Datei zu erstellen, die verschiedene Dateien in verschiedene Verzeichnisse extrahiert, aber ich habe noch nicht damit gespielt.

Eine andere Möglichkeit besteht darin, einen Selbstauszug für den Schnellschnitt zu erstellen, ihn in den Selbstauszug für die App einzubetten und dann ein Run-Once-Skript anzuwenden, dh, Sie wissen, wo sich die Datei befinden wird . usw.

Wenn Sie dem Installationsprogramm die Verwendung benutzerdefinierter Verzeichnisse für die Installation/Dekomprimierung ermöglichen möchten, schauen Sie sich stattdessen das Installationssystem NSIS a an.

Spielen Sie herum, es macht Spaß, hoffe, dass meine Informationen geholfen haben.

0
LokizFenrir

Nur eine kleine Verbesserung der Lösung von leoj3n (um das Konsolenfenster verschwinden zu lassen): Anstatt %windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat" an den Ziel: Als Feld Ihrer Windows-Verknüpfung können Sie auch nur Folgendes hinzufügen: %windir%\system32\cmd.exe /c "%CD%\bat\bat\run.bat" AND und dann start vor Ihren Befehlen in run.bat hinzufügen. Dadurch wird das Konsolenfenster ausgeblendet, aber alles andere bleibt gleich.

Sie können die Batchdatei das aktuelle Arbeitsverzeichnis (CD) ändern lassen.

0
Vincent De Smet

Die Verknüpfung mit einem relativen Pfad kann mit dem Befehl mklink in der Windows - Befehlszeile erstellt werden.

mklink /d \MyDocs \Users\User1\Documents

Dies ist möglicherweise der beste Weg, um eine Verknüpfung zu erstellen, da das Verhalten der Verknüpfung anscheinend von der Art der Erstellung abweicht (Befehl UI vs mklink). Ich habe ein seltsames Verhalten mit dem Verhalten der Verknüpfungen festgestellt, wenn ich den Stammordner ändere.

  • Unter Windows 7 gibt es ein seltsames Verhalten, das ich getestet habe. Manchmal funktioniert der Link immer noch, wenn der Stammordner von target geändert wird (die Verknüpfungseigenschaften werden automatisch aktualisiert, um den geänderten Pfad wiederzugeben!). Das Feld "Start in" wird ebenfalls automatisch aktualisiert, wenn es vorhanden ist.
  • Ich habe auch bemerkt, dass ein Link nicht funktioniert, wenn ich den Wurzelpfad zum ersten Mal ändere (Eigenschaften zeigt alt), aber er funktioniert nach dem 2. und jedes Mal danach. Die Linkeigenschaften werden als Ergebnis des ersten Durchlaufs aktualisiert!
  • Mir ist zumindest für zwei Links auch aufgefallen, dass der Pfad nicht aktualisiert wird und nicht mehr funktioniert.
  • Bei den Link-Eigenschaften gibt es keine Unterschiede im Format der Felder, das Verhalten ist jedoch unterschiedlich.
0
zar