Obtener la ruta de un archivo sin su nombre

1

El archivo song.mp3 se encuentra en

C:\x-folders\y-folder\z-folder\song.mp3

¿Cómo puedo almacenar esta ruta en una variable?

C:\x-folders\y-folder\z-folder\

Gracias

Fernando YP
fuente
1
Estudio de FOR /?salida, especialmente para %~dpI.
Akina

Respuestas:

1

Hay algunas maneras de hacer esto desde la línea de comando y pondré dos que se me ocurren a continuación para que pueda consultarlas y probarlas cuando tenga la oportunidad. Incluiré recursos adicionales para estudios adicionales también.

Ejemplo uno

for %a in ("C:\x-folders\y-folder\z-folder\song.mp3") do set var=%~dpa 

Entonces %var%será la variable establecida, así que solo haga referencia %var%al valor aplicable.


Ejemplo dos

Si necesita recorrer una carpeta con muchos .mp3archivos, puede usar esta sintaxis

for /f "tokens=*" %a in ('dir /b "C:\SomeFolder\*.mp3"') do set var=%~fa\

Entonces %var%será la variable establecida, así que solo haga referencia %var%al valor aplicable. Puede hacer referencia de !var!esa manera si necesita EnableDelayedExpansion dependiendo de lo que necesita lograr exactamente con el ciclo si esta es la forma en que planea hacer referencia a muchos archivos y su ruta de carpeta residente. Por último, también puede usar dir /s /bpara recorrer el directorio de forma recursiva.


Recursos adicionales

  • Dir
  • por

    Sustituciones variables (FOR /?)

    Además, se ha mejorado la sustitución de referencias variables FOR. Ahora puede usar la siguiente sintaxis opcional:

    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    
  • EnableDelayedExpansion

    La expansión retrasada hará que las variables dentro de un archivo por lotes se expandan en el tiempo de ejecución en lugar de en el tiempo de análisis, esta opción se activa con el comando SETLOCAL EnableDelayedExpansion.


    Cuando la expansión retrasada está en efecto, las variables se pueden leer de inmediato usando! Variable_name! También puede leer y usar% variable_name% que mostrará el valor inicial (expandido al comienzo de la línea).

Pimp Juice IT
fuente
Respuesta muy informativa. 👍
Tim_Stewart