En una ventana de DOS, ¿cómo puedo obtener el nombre completo de DOS / el nombre corto del directorio en el que estoy?
Por ejemplo, si estoy en el directorio C:\Program Files\Java\jdk1.6.0_22
, quiero mostrar su nombre corto C:\PROGRA~1\Java\JDK16~1.0_2
.
Sé que la ejecución dir /x
me dará los nombres cortos de los archivos / directorios en el directorio actual, pero no he podido encontrar una manera de mostrar la ruta completa del directorio actual en formato de nombre corto. Tengo que abrirme paso a través de la ruta desde la raíz, directorio por directorio, ejecutándose dir /x
en cada uno.
Estoy seguro de que hay una forma más fácil de hacer esto.
windows
command-line
CodeClimber
fuente
fuente
Respuestas:
¿Alguna forma más sencilla?
fuente
for /d %I in (*) do @echo %~sI
cada segmento de la ruta es corto, genial. El problema no fue directamente con los nombres largos, ni siquiera con los espacios, aunque un dolor, pero lo peor es cuando hay caracteres internacionales presentes que simplemente manchan mi script tomando esta lista de directorios como entrada.%
signos:for %%I in ("C:\folder with spaces") do echo %%~sI
También puede ingresar lo siguiente en una ventana de CMD:
Donde
<ParentDirectory>
se reemplaza por la ruta completa del directorio que contiene el elemento cuyo nombre desea.Si bien la salida no es tan simple como la respuesta de Timbo , enumerará todos los elementos en el directorio especificado con el nombre real y (si es diferente) el nombre corto.
Si lo usa
for %I in (.) do echo %~sI
, puede reemplazar el.
con la ruta completa del archivo / carpeta para obtener el nombre corto de ese archivo / carpeta (de lo contrario, se devuelve el nombre corto de la carpeta actual).Probado en Windows 7 x64.
fuente
En los scripts 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í:Editar: aquí hay una versión que usa el directorio actual si no se proporcionó ningún parámetro:
Llamado sin parámetros:
fuente
%0
es el nombre de la ruta del script por lotes).Ser programador hizo este proyecto Winform de 10 minutos. Me ha resultado útil. Convertir esta aplicación en un menú contextual para el explorador de archivos ahorraría más clics.
Form1.cs:
Form1.Designer.cs:
fuente
ejecutar
cmd.exe
y hacer lo siguiente:Entonces aparecerá command.com y mostrará solo rutas cortas.
fuente
fuente
La respuesta de Kimbo es perfecta para archivos normales.
Para nombres de archivo MsDos en HardLinks
Los enlaces duros creados con
mklink /H <link> <target>
físicos no tendrán un nombre de archivo corto MsDos.En caso de que usted
dir /X
y usted descubran que falta un nombre corto, deben esperar lo siguiente:Archivo normal
En este caso
Tengo lo que esperaba
Archivo de vínculo físico
En este caso
Tengo la ruta normal de MsDos pero el nombre de archivo normal.
fuente
similar a esta respuesta pero usa una subrutina
fuente
Una respuesta más directa para alguien es arreglar el error.
% SPARK_HOME% \ bin \ spark-class2.cmd; Línea 54
Broken: set RUNNER="%JAVA_HOME%\bin\java"
Windows Style: set "RUNNER=%JAVA_HOME%\bin\java"
De lo contrario, el RUNNER termina con comillas y el comando
"%RUNNER%" -Xmx128m ...
termina con comillas dobles. El resultado es que el programa y el archivo se tratan como parámetros separados.fuente
Inspirado por la respuesta del Dr. Scripto
fuente
si a través de un archivo por lotes use:
puede usar el comando echo para verificar:
fuente
use este enlace, convertirá automáticamente cualquier ruta que le dé a cualquier formato https://pathconverter-pp.azurewebsites.net
fuente