Un modo a cui posso pensare è usare altre variabili di ambiente per memorizzare percorsi parziali; ad esempio, se hai
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1;
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2;
quindi puoi creare una nuova variabile d'ambiente come
SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places
dopo di che diventano i tuoi percorsi originali
%P1%\subdir1;
%P1%\subdir2;
EDIT: un'altra opzione è creare una bin
directory che contenga .bat
file che puntano ai .exe
file appropriati .
EDIT 2: il commento di Ben Voigt a un'altra risposta afferma che l'utilizzo di altre variabili di ambiente come suggerito potrebbe non ridurre la lunghezza di %PATH%
perché verrebbero espanse prima di essere archiviate. Questo potrebbe essere vero e non l'ho testato. Un'altra opzione è usare i moduli 8dot3 per nomi di directory più lunghi, ad esempio C:\Program Files
è tipicamente equivalente a C:\PROGRA~1
. Puoi usare dir /x
per vedere i nomi più brevi.
EDIT 3: Questo semplice test mi porta a credere che Ben Voigt abbia ragione.
set test1=hello
set test2=%test1%hello
set test1=bye
echo %test2%
Alla fine di questo, vedrai output hellohello
invece di byehello
.
MODIFICA 4: Nel caso in cui decidi di utilizzare file batch per eliminare determinati percorsi %PATH%
, potresti essere preoccupato di come trasmettere argomenti dal tuo file batch al tuo eseguibile in modo che il processo sia trasparente (cioè, non noterai alcuna differenza tra la chiamata del file batch e la chiamata dell'eseguibile). Non ho molta esperienza nella scrittura di file batch, ma sembra funzionare bene.
@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%
Come regola generale, dovresti stare attento all'esecuzione di file batch da Internet, poiché puoi fare ogni genere di cose con i file batch come la formattazione del tuo disco rigido. Se non ti fidi del codice sopra (che ho scritto), puoi testarlo sostituendo la riga
%actualdir%\%actualfile% %args%
con
echo %actualdir%\%actualfile% %args%
Idealmente dovresti sapere esattamente cosa fa ogni riga prima di eseguirla.