Une façon à laquelle je pense est d'utiliser d'autres variables d'environnement pour stocker des chemins partiels; par exemple, si vous avez
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1;
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2;
ensuite, vous pouvez créer une nouvelle variable d'environnement tels que
SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places
après que vos originaux chemins deviennent des
%P1%\subdir1;
%P1%\subdir2;
EDIT: une Autre option est de créer un bin
répertoire qui contient .bat
fichiers qui pointent à l'appropriées .exe
fichiers.
EDIT 2: Ben Voigt commentaire une autre réponse mentionne que l'utilisation d'autres variables d'environnement, comme l'a suggéré pourrait ne pas réduire la durée de l' %PATH%
parce qu'ils seraient élargies avant de les stocker. Cela peut être vrai et je n'ai pas testé. Une autre option est d'utiliser 8dot3 formes de plus, les noms de répertoire, par exemple C:\Program Files
est généralement équivalent à C:\PROGRA~1
. Vous pouvez utiliser dir /x
voir les noms plus courts.
EDIT 3: Ce test très simple qui m'amène à croire que Ben Voigt est droit.
set test1=hello
set test2=%test1%hello
set test1=bye
echo %test2%
À la fin de cette opération, vous voyez de sortie hellohello
plutôt que d' byehello
.
EDIT 4: Dans le cas où vous décidez d'utiliser des fichiers batch pour l'élimination de certains chemins de %PATH%
, vous pourriez être préoccupé par la façon de transmettre des arguments à partir de votre fichier de commandes à votre exécutable tels que la transparence du processus (c'est à dire, vous ne remarquerez aucune différence entre un appel le fichier de commandes et de l'appel de l'exécutable). Je n'ai pas beaucoup d'expérience dans l'écriture des fichiers batch, mais cela semble bien fonctionner.
@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%
En règle générale, vous devriez être prudent sur l'exécution par lots des fichiers à partir d'internet, puisque vous pouvez faire toutes sortes de choses avec des fichiers de commandes telles que le formatage de votre disque dur. Si vous n'avez pas confiance dans le code ci-dessus (ce que j'ai écrit), vous pouvez le tester en remplaçant la ligne
%actualdir%\%actualfile% %args%
avec
echo %actualdir%\%actualfile% %args%
Idéalement, vous devez savoir exactement ce que chaque ligne ne avant de l'exécuter.