Necesito usar nombres de ruta abreviados para una aplicación que estoy usando. Por ejemplo, necesito C:\PROGRA~1\
en lugar de C:\Program Files
. El programa no puede manejar espacios y no aceptará rutas entre comillas (por ejemplo "C:\Program Files"
).
Si ayuda, estoy usando Windows 7. Puedo obtener acceso a cualquier versión desde XP, si es necesario.
/s
cambio hace recursión de subcarpetasCree un archivo bat en algún directorio conveniente, luego podría copiar + pegar la ruta corta desde esa ruta.
Podrías simplemente ejecutar
command.com
y seguir haciendocd
comandos en tu directorio actual también.En las secuencias de comandos por lotes de Windows,
%~s1
expande los parámetros de ruta a nombres cortos . Cree este archivo por lotes:Llamé al mío
shortNamePath.cmd
y lo llamo así:Aquí hay una versión que usa el directorio actual si no se proporcionó ningún parámetro:
Llamado sin parámetros:
Usando
SET
y una variable con nombreEl símbolo del sistema de Windows tiene algunas convenciones para manejar variables con espacios en sus valores que son algo difíciles de aprender y comprender, especialmente si tiene un fondo Unix. Tu puedes hacer
( sin comillas ), o
(tenga en cuenta la colocación no intuitiva de comillas); entonces
fuente
Aquí hay un trazador de líneas :
Desglose :
cmd /c
- Inicia una nueva instancia del intérprete de comandos de Windows, ejecuta el comando especificado por cadena y luego terminafor %%parameter in (set) do
comando - Condicionalmente ejecuta un comando varias veces.echo
- Mostrar mensajes en pantalla.@
El símbolo es el mismo que seECHO OFF
aplica a la línea actual solamente.%~s
- La ruta expandida contiene solo nombres cortos.Fuentes :
fuente
cmd /c
? Si está en una ventana del símbolo del sistema, puede simplemente escribir elfor %A in ("C:\Program Files") do @echo %~sA
comando, y si escribe esto en el cuadro de diálogo "Ejecutar", el resultado desaparece antes de que pueda leerlo.cmd /c
cuando se ejecuta desdecmd
; lo necesita de PowerShell , pero luego también necesita'...'
cerrar los tokens después de/c
:cmd /c 'for %f in ("C:\Program Files") do @echo %~sf'
El "nombre corto" es realmente la antigua convención de nomenclatura de DOS 8.3, por lo que todos los directorios serán las primeras 6 letras seguidas
~1
asumiendo que solo hay un nombre que coincida, por ejemplo:aquí es la única excepción
fuente
Program Files
yProgram Files (x86)
esPROGRA~1
y qué uno esPROGRA~2
. La respuesta de Paul resuelve ese problema....~4
) comenzó con lo que parece un hash, por ejemplo,ABxxxx~1
donde x era hexadecimal, lo que no es muy fácil de leer.ABCDEFGH-CAT
, recibe un nombre cortoABCDEF~1
. Si luego creoABCDEFGH-DOG
, obtiene un nombre cortoABCDEF~2
. Si a continuación, eliminarABCDEFGH-CAT
,ABCDEFGH-DOG
, todavía tiene nombre cortoABCDEF~2
. No hay forma de saberlo simplemente mirando los nombres largos.~1
. Vea la regla que usa Windows para generar nombres cortos . Y también puede establecer el nombre corto manualmentefsutil
, por lo que los dos nombres pueden no tener ninguna relación. Y mucho menos enlaces duros o blandosEncontré una forma muy útil de resolver el nombre corto de ruta del directorio actual (o cualquier otra cosa) si tiene instalado Powershell.
Simplemente abra PowerShell en el directorio actual
en cmd windows escriba powershell
si tiene una carpeta abierta en la interfaz gráfica de usuario, puede escribir cmd.exe o powershell.exe directamente en la barra de direcciones de la carpeta.
Entonces dar el comando
Origen de la información: [ https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]
fuente
Similar a la respuesta de Ivan Schwartz , puede reemplazar "C: \ Archivos de programa" con
%cd%
para obtener el directorio actual:fuente
Alternativamente, podría utilizar esta pequeña herramienta increíble llamada PathCopyCopy
En unos pocos clics, puede obtener la ruta larga y corta de literalmente cualquier carpeta desde el menú contextual, por ejemplo:
Hecho. Se copiará a su portapapeles.
avance
fuente
He instalado módulos de nodo ejecutándome
npm install
en un repetitivo. Al intentar eliminar esas carpetas, Windows no nos permite eliminarlas ya que la ruta es demasiado larga para poder manejarla.Después de un poco de investigación superficial, pensé que sería correcto que mi propio fragmento de código cambie el nombre de las carpetas de raíz a hoja para que arroje cualquier excepción de violación para este intento también.
Esto funciona para mi. El siguiente es el código para el proyecto C #.
fuente
Esta es la forma más fácil que he utilizado al tratar con archivos con espacios y también es accesible desde el explorador de archivos, tiene los mismos privilegios de acceso.
fuente
Guárdelo como shortpath.bat y luego arrastre archivos sobre él. Su resultado:
Llamarlo también
shortpath <file path>
está bien.fuente
Simplemente reemplace los espacios con
Es la forma en que las cosas se "traducen" y los espacios entran en% 20.
Si realmente necesita mucho, simplemente abra su navegador y escriba algo como
fuente
if exist C:\Program%20Files\ (echo exists)