Me gustaría saber cuáles son los enfoques que utiliza para administrar los ejecutables en su sistema. Por ejemplo, tengo casi todo accesible a través de la línea de comando, pero ahora llego al límite de la cadena de ruta, por lo que no puedo agregar más dir.
Entonces, ¿qué me recomienda? Hace mucho tiempo, traté de usar softLinks de los ejecutables en un Dir que pertenecía a la ruta, pero ese enfoque no funcionó. Lanzar el "ejecutable solamente" a un Dir conocido, tiene el problema de que casi cualquier aplicación requiere un conjunto de archivos, por lo que esto también es malo. Lanza el ejecutable y todos sus archivos a un Dir conocido, mmm esto funcionará, pero la posibilidad de tener un conflicto en el nombre de los archivos es muy, muy alta. ¿Crear un enlace duro? no lo sé. ¿Qué piensas?
Respuestas:
Una forma en la que puedo pensar es usar otras variables de entorno para almacenar rutas parciales; por ejemplo, si tienes
entonces puedes crear una nueva variable de entorno como
después de lo cual tus caminos originales se vuelven
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 aC:\PROGRA~1
. Puede utilizardir /x
para ver los nombres más cortos.EDICIÓN 3: Esta simple prueba me lleva a creer que Ben Voigt tiene razón.
Al final de esto, verá salida en
hellohello
lugar debyehello
.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.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
con
Idealmente, debería saber exactamente qué hace cada línea antes de ejecutarla.
fuente
cmd
, tenga en cuenta que puede usar*
para guardar la escritura. Entonces, por ejemplo, desde la raíz, escribadir /x pro*
. Verá el directorio deseado allí junto con su nombre 8dot3. Luego usecd
para navegar hasta él y repita el proceso.$PATH
que funciona de manera muy similar a%PATH%
Windows, así que no estoy seguro de cuál es exactamente tu punto. Por convención, los nombres de directorio de UNIX tienden a ser más cortos que en Windows y, como resultado,$PATH
también tienden a ser más cortos.Esto analizará su variable de entorno% PATH% y convertirá cada directorio a su equivalente de nombre corto y luego lo volverá a unir todo:
Tome la salida y actualice la variable PATH en las variables de entorno.
fuente
%%~sa
. Intenté actualizar la respuesta, pero no me dejará a menos que cambie 6 caracteressi está utilizando Windows Vista o superior, puede crear un enlace simbólico a la carpeta. por ejemplo:
mklink /d C:\pf "C:\Program Files"
haría un enlace para
c:\pf
lo que sería suprogram files
carpeta. Eliminé 300 caracteres de mi camino usando este truco.fuente
c:\Program Files
yc:\Program Files (x86)
con las variables predefinidas%ProgramFiles%
y%ProgramFiles(x86)%
tenforums.com/tutorials/ ... Estos solo guardan unos pocos caracteres cada uno. , pero si REALMENTE estás a punto de maximizar PATH, podría ser la diferencia. De hecho, voy a crear% pf% y% pfx% que se resuelven en las rutas correctas. ¡Gracias por la idea! :)En caso de que alguien esté interesado ...
Me parece que nunca necesito todas esas rutas a la vez, así que creo un montón de archivos por lotes de "inicialización" que modifican la ruta en consecuencia.
Por ejemplo, si quisiera hacer algún desarrollo de C ++ en Eclipse, haría:
Esto también es útil para evitar conflictos entre ejecutables con el mismo nombre (como los compiladores C ++ y D, que tienen un make.exe).
Mis archivos por lotes suelen tener este aspecto:
Encuentro este enfoque relativamente limpio y aún no he tenido ningún problema con él.
fuente
Por lo general, no tengo que preocuparme por esto (no me he topado con un límite de tamaño de ruta, ni siquiera sé qué es eso en los sistemas modernos de Windows), pero esto es lo que podría hacer para evitar poner el directorio de un programa en el camino:
c:\util
directorio que está en la rutade lo contrario, agregaré un archivo cmd / batch simple al
c:\util
directorio que se parece a:que esencialmente crea un alias para el comando. No es necesariamente perfecto. Algunos programas realmente insisten en estar en el camino (eso es bastante raro hoy en día), y otros programas que intentan invocarlo pueden no encontrarlo correctamente. Pero para la mayoría de los usos funciona bien.
Pero en general, no he tenido que preocuparme por evitar agregar directorios a la ruta.
fuente
cmd /c
, pero eso a su vez significa que el script de compilación se vuelve específico de Windows: / He preguntado sobre eso en una pregunta separada .Otra idea: use DIR / X para determinar los nombres cortos generados para los nombres de archivo que no son 8dot3. Luego utilícelos en su% PATH%.
Por ejemplo, 'C: \ Archivos de programa' se convierte en 'C: \ PROGRA ~ 1'.
fuente
Utilice la clave de registro App Path en lugar de la variable de ruta para las rutas específicas de la aplicación:
http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx
fuente
Escribí y uso siempre una secuencia estándar (stdin / stderr / stdout) y el código de salida del programa PROXY (llamado dispatcher https://github.com/131/dispatcher )
Todo el programa CLI que uso (nodo, php, python, git, svn, rsync, plink ...) que estoy usando son en realidad el mismo archivo exe (alrededor de 10kb, que solo nombro de manera diferente), que puse en el mismo directorio. Un archivo de texto claro estático ficticio hace el "nombre de archivo proxy para mapeo exe real".
Dispatcher utiliza la API win32 de gestión de procesos de bajo nivel para ser absolutamente transparente.
Al usar este software, solo tengo UN directorio adicional configurado en mi RUTA para todos los programas que pueda usar.
fuente
La creación de una carpeta c: \ bin agregando a su ruta y la vinculación dura como dijo podría acortar la cadena. Tal vez agregue una variable pf a las variables del sistema con el valor c: \ Archivos de programa y luego reemplace c: \ Archivos de programa con% pf% en la ruta.
Editar:
Crea una unidad virtual. subst p: "c: \ archivos de programa"
fuente
Sigo estos pasos para que las entradas sean manejables:
Creó diferentes usuarios para diferentes combinaciones de uso de paquetes de software. Ejemplo: (a) Creó una web de usuario para poner a disposición todo el software de desarrollo web; (b) Creó una base de datos de usuarios para poner a disposición todos los paquetes de software de base de datos y almacenamiento de datos. Recuerde que algunos programas pueden crear más de una entrada. O en algún momento lo divido en usuarios específicos de Oracle y MSSQL y específicos de Oracle. Puse MySQL / PostgreSQL, tomcat, wamp, xamp en la cuenta de usuario webr.
Si es posible, instale paquetes comunes como office, photoshop, .. como específicos del sistema disponibles para todos los usuarios y paquetes especiales como específicos del usuario. Por supuesto, tuve que iniciar sesión en diferentes usuarios e instalarlos. No todo el software puede ofrecer esta opción. Si la opción "instalar solo para este usuario" no está disponible, instálela para todo el sistema.
Evito instalar programas en la carpeta Archivo de programa (x86) o en Archivo de programa. Siempre lo instalo en el directorio base. Por ejemplo, MySQL de 64 bits va a "C: \ mysql64" y MySQL de 32 bits va a la carpeta "C: \ mysql". Siempre asumo agregar un sufijo 64 solo para software de 64 bits. Si no hay sufijo, entonces es de 32 bits. Sigo lo mismo para Java y otros. De esta manera mi ruta será más corta, sin incluir "C: \ Archivo de programa (x86)". Para algunos software, es posible que sea necesario editar el archivo de configuración para mostrar dónde está exactamente el archivo .exe. Solo el programa que exige ser instalado en "C: \ Archivo de programa (x86)" se instalará en esa carpeta. Siempre recuerdo acortar los nombres. Evito el número de versión como tomcat / release / version-2.5.0.3 tales detalles. Si necesito la versión conocida, Creo un archivo por versión de nombre y lo coloco en la carpeta tomcat. En general, acorte el enlace tanto como sea posible.
Incluya cualquier lote para reemplazar el enlace abreviado a la ruta, si todos los pasos anteriores superaron el límite de Windows.
A continuación, inicie sesión en un usuario específico de uso (aplicación móvil, base de datos / almacenamiento de datos o desarrollo web .. ..) y realice las tareas pertinentes.
También puede crear ventanas virtuales dentro de las ventanas. Siempre que tenga una copia del sistema operativo con licencia, es posible crear varias ventanas virtuales con la misma clave. Puede colocar paquetes específicos para una tarea en particular en esa máquina. Tienes que iniciar una máquina virtual separada cada vez. Algunos paquetes de memoria intensiva, como los creadores de películas de animación en 3D, deben colocarse en la máquina principal, no en la VM, ya que la VM solo tendrá una parte de la RAM disponible para su uso. Sin embargo, es una molestia arrancar cada VM.
fuente
Las soluciones anteriores solo funcionan si puede recortar su camino. En mi caso, esa no era realmente una opción, y era una molestia tener que ejecutar un script cada vez que abría un símbolo del sistema. Así que escribí un script simple que se ejecuta automáticamente al abrir el símbolo del sistema y agrega el contenido de un archivo de texto a su ruta.
También hay algunos contextos en los que la ejecución de este script rompe las cosas (por ejemplo, en un shell github o cygwin), por lo que también agregué un archivo que contiene una lista de rutas que, si el símbolo del sistema se inicia en ellas, la variable de ruta no es no cambió a través del script de inicio que normalmente actualiza la ruta.
Y Path.txt se verá algo así
Si bien Dontsetup.txt se verá algo así como
Para que esto se ejecute automáticamente al inicio, abra regedit, navegue hasta HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Command Processor, luego haga clic derecho a la derecha y presione nuevo -> Valor de cadena múltiple. Nómbrelo AutoRun. Establezca su valor en
o en cualquier otro lugar donde almacenó el archivo por lotes anterior.
fuente
No lo intenté, pero ¿funcionará dividir PATH en partes y unirlas en la variable final?
Ejemplo inicialmente, digamos que tienes algo como
PATH={LONGPATH1};{LONGPATH2};....{2048th char}....{LONGPATH_N-1};{LONGPATH_N}
En su lugar, crea:
fuente