Eine Möglichkeit, die ich mir vorstellen kann, besteht darin, andere Umgebungsvariablen zum Speichern von Teilpfaden zu verwenden. Zum Beispiel, wenn Sie haben
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1;
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2;
Dann können Sie eine neue Umgebungsvariable erstellen, z
SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places
Danach werden Ihre ursprünglichen Wege
%P1%\subdir1;
%P1%\subdir2;
BEARBEITEN: Eine weitere Option besteht darin, ein bin
Verzeichnis zu erstellen , das .bat
Dateien enthält, die auf die entsprechenden .exe
Dateien verweisen .
BEARBEITEN 2: In dem Kommentar von Ben Voigt zu einer anderen Antwort wird erwähnt, dass die Verwendung anderer Umgebungsvariablen, wie vorgeschlagen, die Länge möglicherweise nicht verkürzt, %PATH%
da sie vor dem Speichern erweitert werden. Dies mag wahr sein und ich habe es nicht getestet. Eine andere Option ist jedoch die Verwendung von 8dot3-Formularen für längere Verzeichnisnamen. Dies C:\Program Files
entspricht beispielsweise normalerweise C:\PROGRA~1
. Sie können verwenden dir /x
, um die kürzeren Namen zu sehen.
EDIT 3: Dieser einfache Test lässt mich glauben, dass Ben Voigt Recht hat.
set test1=hello
set test2=%test1%hello
set test1=bye
echo %test2%
Am Ende sehen Sie hellohello
eher die Ausgabe als byehello
.
BEARBEITEN 4: Wenn Sie sich entscheiden, Batchdateien zu verwenden, um bestimmte Pfade zu entfernen %PATH%
, sind Sie möglicherweise besorgt darüber, wie Sie Argumente aus Ihrer Batchdatei an Ihre ausführbare Datei weitergeben können, sodass der Prozess transparent ist (dh Sie werden keinen Unterschied bemerken zwischen dem Aufrufen der Batch-Datei und dem Aufrufen der ausführbaren Datei). Ich habe nicht viel Erfahrung mit dem Schreiben von Batch-Dateien, aber das scheint gut zu funktionieren.
@echo off
rem This batch file points to an executable of the same name
rem that is located in another directory. Specify the directory
rem here:
set actualdir=c:\this_is\an_example_path
rem You do not need to change anything that follows.
set actualfile=%0
set args=%1
:beginloop
if "%1" == "" goto endloop
shift
set args=%args% %1
goto beginloop
:endloop
%actualdir%\%actualfile% %args%
In der Regel sollten Sie beim Ausführen von Batchdateien aus dem Internet vorsichtig sein, da Sie mit Batchdateien alles Mögliche tun können, z. B. das Formatieren Ihrer Festplatte. Wenn Sie dem obigen Code (den ich geschrieben habe) nicht vertrauen, können Sie ihn testen, indem Sie die Zeile ersetzen
%actualdir%\%actualfile% %args%
mit
echo %actualdir%\%actualfile% %args%
Idealerweise sollten Sie genau wissen, was jede Zeile tut, bevor Sie sie ausführen.