Una forma en la que puedo pensar es usar otras variables de entorno para almacenar rutas parciales; por ejemplo, si tienes
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1;
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2;
entonces puedes crear una nueva variable de entorno como
SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places
después de lo cual tus caminos originales se vuelven
%P1%\subdir1;
%P1%\subdir2;
EDITAR: Otra opción es crear un bin
directorio que contenga .bat
archivos que apunten a los .exe
archivos apropiados .
EDICIÓN 2: El comentario de Ben Voigt a otra respuesta menciona que el uso de otras variables de entorno como se sugiere podría no reducir la longitud de %PATH%
porque se expandirían antes de almacenarse. Esto puede ser cierto y no lo he probado. Sin embargo, otra opción es usar formularios 8dot3 para nombres de directorio más largos, por ejemplo, C:\Program Files
normalmente es equivalente a C:\PROGRA~1
. Puede utilizar dir /x
para ver los nombres más cortos.
EDICIÓN 3: Esta simple prueba me lleva a creer que Ben Voigt tiene razón.
set test1=hello
set test2=%test1%hello
set test1=bye
echo %test2%
Al final de esto, verá salida en hellohello
lugar de byehello
.
EDITAR 4: en caso de que decida usar archivos por lotes para eliminar ciertas rutas %PATH%
, es posible que le preocupe cómo pasar argumentos de su archivo por lotes a su ejecutable, de modo que el proceso sea transparente (es decir, no notará ninguna diferencia entre llamar al archivo por lotes y llamar al ejecutable). No tengo mucha experiencia escribiendo archivos por lotes, pero esto parece funcionar bien.
@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%
Como regla general, debe tener cuidado al ejecutar archivos por lotes desde Internet, ya que puede hacer todo tipo de cosas con archivos por lotes, como formatear su disco duro. Si no confía en el código anterior (que escribí), puede probarlo reemplazando la línea
%actualdir%\%actualfile% %args%
con
echo %actualdir%\%actualfile% %args%
Idealmente, debería saber exactamente qué hace cada línea antes de ejecutarla.