Une façon dont je peux penser 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;
alors vous pouvez créer une nouvelle variable d'environnement telle que
SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places
après quoi vos chemins originaux deviennent
%P1%\subdir1;
%P1%\subdir2;
EDIT: Une autre option consiste à créer un bin
répertoire contenant les .bat
fichiers qui pointent vers les .exe
fichiers appropriés .
EDIT 2: Le commentaire de Ben Voigt sur une autre réponse mentionne que l'utilisation d'autres variables d'environnement comme suggéré pourrait ne pas réduire la longueur de %PATH%
car elles seraient développées avant d'être stockées. Cela peut être vrai et je ne l'ai pas testé. Une autre option consiste cependant à utiliser des formulaires 8dot3 pour des noms de répertoire plus longs, par exemple, cela C:\Program Files
équivaut généralement à C:\PROGRA~1
. Vous pouvez utiliser dir /x
pour voir les noms plus courts.
EDIT 3: Ce simple test me porte à croire que Ben Voigt a raison.
set test1=hello
set test2=%test1%hello
set test1=bye
echo %test2%
À la fin de cela, vous voyez la sortie hellohello
plutôt que byehello
.
EDIT 4: Si vous décidez d'utiliser des fichiers batch pour éliminer certains chemins %PATH%
, vous pourriez être préoccupé par la façon de transmettre les arguments de votre fichier batch à votre exécutable afin que le processus soit transparent (c'est-à-dire que vous ne remarquerez aucune différence entre l'appel du fichier batch et l'appel de l'exécutable). Je n'ai pas beaucoup d'expérience dans l'écriture de fichiers batch, mais cela semble fonctionner correctement.
@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 devez être prudent lorsque vous exécutez des fichiers de commandes à partir d'Internet, car vous pouvez faire toutes sortes de choses avec des fichiers de commandes, comme le formatage de votre disque dur. Si vous ne faites pas confiance au code ci-dessus (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 fait chaque ligne avant de l'exécuter.