Hier ist mein eigener Programmordner auf meinem USB-Laufwerk:
Program\
run.bat
bin\
config.ini
Iris.exe
library.dll
etc.
Ich würde gerne run.bat
anfangen Iris.exe
Ich kann dies nicht verwenden: F:/Program/bin/Iris.exe
wie eine Verknüpfung, da sie manchmal nicht als Laufwerk angehängt wird F:
( z. B. E:
oder G:
)
Was muss ich in die Bat-Datei schreiben, um unabhängig vom Laufwerksbuchstaben zu arbeiten?
Ich habe dies in der BAT-Datei versucht:
"\bin\Iris.exe"
Aber es funktioniert nicht.
batch-file
cmd
relative-path
drive
user2083037
quelle
quelle
C:\myDir\\bin\Iris.exe
(beachten Sie den doppelten Backslash). Dies funktioniert immer noch, aber den Backslash wegzulassen, bevor bin "sauberer" zu sein scheint? ->%~dp0bin\Iris.exe
.%~dp0
es immer einen abschließenden Backslash gibt, funktionieren beide Anweisungen. Ansonsten ist der mit dem zusätzlichen Backslash die sicherere Variante."%~dp0\bin\Iris.exe"
), da der Pfad ein Leerzeichen enthielt :) Nur um wirklich sicher zu sein, dass er auf jedem Computer funktioniert.SET "scriptdir=%~dp0"
und in der nächsten Zeile ein Backslash vorhanden istIF NOT "%scriptdir:~-1%"=="\" SET "scriptdir=%scriptdir%\"
. Ich habe Vorfälle gesehen, bei denen ein doppelter Backslash in der Mitte des Pfads die Software unterbricht.Sie können alle erforderlichen Dateieigenschaften mithilfe des folgenden Codes abrufen:
quelle
Ich habe festgestellt, dass
%CD%
der Pfad, von dem aus das Skript aufgerufen wurde, und nicht der Pfad des Skripts%~dp0
den Pfad des Skripts selbst angibt.quelle
Sie sollten das aktuelle Verzeichnis verwenden können
quelle
Program
ist. Dies geschieht, wenn Sierun.bat
im Explorer auf das doppelklicken.%CD%
ist das aktuelle Verzeichnis%~dp0
ist das Verzeichnis der Batch-Datei selbstentweder
bin\Iris.exe
(kein führender Schrägstrich - denn das bedeutet, dass Sie direkt von der Wurzel aus beginnen)oder
\Program\bin\Iris.exe
(vollständiger Pfad)quelle
\Program
- ist das nicht der Fall? Sie können dies mit einem einfachencd
Befehl in der Zeile zeigen, bevor Sie versuchen, die .exerun.bat
.