Soy nuevo en los scripts de Windows y tengo la ruta absoluta como, /bin/debug/test/abc.xyz.dll
y quiero eliminar el nombre del archivo y obtener solo una ruta como salida: /bin/debug/test/
.
¿Cómo debería hacer eso?
Respuesta1
Puede utilizar las funciones extendidas de un FOR
bucle para esto, incluso si no forma un "bucle":
@echo off
setlocal EnableExtensions
set "arg=%~1"
for /f %%A in ('echo %arg%') do echo %%~pA
donde llama a este script con el nombre de archivo completo, posiblemente citado para proteger los espacios dentro.
editar:
Se utilizó mi código original echo %%~nxA
que claramente era incorrecto, lo siento. Aísla el nombre del archivo de la ruta y devuelve el nombre del archivo. El código anterior ahora devuelve sólo la ruta (sin la letra de la unidad).
editar2: Agradezco a @Karan por señalar que esto se puede abreviar a
@echo off
setlocal EnableExtensions
echo %~p1
porque la sintaxis de expansión de variables extendidas está disponible no solo en FOR
bucles sino también conexpansión del argumentotambién (ver LLAMADA /?).