Eliminar subcadena del script de Windows de ruta absoluta

Eliminar subcadena del script de Windows de ruta absoluta

Soy nuevo en los scripts de Windows y tengo la ruta absoluta como, /bin/debug/test/abc.xyz.dlly 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 FORbucle 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 %%~nxAque 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 FORbucles sino también conexpansión del argumentotambién (ver LLAMADA /?).

información relacionada