Extraer nombre y extension de archivo en Batch[Solucionado]

Iniciado por gorgon12, 6 Agosto 2009, 19:12 PM

0 Miembros y 2 Visitantes están viendo este tema.

gorgon12

Bueno chavos, pues precisamente eso...

El asunto es que tengo una ruta alojada en una variable, mi duda es: ¿como puedo extraer "solamente" el nombre y extensión del archivo de la cadena entera para posteriormente alojar solo esa información en otra variable?

No se si alguno de uds tenga alguna solución... de antemano les agradezco

Saludos.

Ari Slash


la ruta obviamente sera la que cambiara
pero el nombre de archivo es constante o puede ser cualkier archivo?


salu2

gorgon12

Tal vez no me expresé muy bien...

en mi .bat tengo una linea:

set /p ruta=Ingrese Aqui La Ruta del Archivo

si yo agrego un echo %ruta% saldrá una linea parecida a la siguiente:

C:\Documents and Settings\Usuario\Mis Documentos\Archivo.xxx

Pero yo no necesito toda esa información, solo deseo el nombre y extensión de archivo.

El archivo no lo conozco por anticipado puesto q la variable es una petición al usuario.

Saludos

leogtz

Primera forma:
Código (dos) [Seleccionar]

@echo off
:code
set /p "ruta=Ingrese aqui la ruta del archivo : "
if not defined ruta (goto:code)
call:_view %ruta%
goto:eof
:_view
echo %~nx1
goto:eof


Salida:
Ingrese aqui la ruta del archivo : c:\windows\system32\msg.exe
msg.exe


Segunda forma:

Código (dos) [Seleccionar]

@echo off
:code
set /p "ruta=Ingrese aqui la ruta del archivo : "
if not defined ruta (goto:code)
for %%_ in ("%ruta%") do (
echo %%~nx_
)
pause
goto:eof
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Ari Slash

como te quedo el ojo?

te presento al maestro Leo gutierrez
:xD


gorgon12

#5
Gracias Leo, funciona a la prefección, usar el comando call con la ruta como parametro no se me habia ocurrido.

Por tanto si quisiera el resultado en una variable siguiendo como ejemplo tu código se podria hacer:

@echo off
:code
set /p "ruta=Ingrese aqui la ruta del archivo : "
if not defined ruta (goto:code)
call:_view %ruta%
goto:eof
:_view
set name=%~nx1
goto:eof


y usar esa información cuando quiera.... ahora, ¿es posible crear la variable sin la necesidad de "call"?
Me refiero a si puedes especificar la ruta como parámetro directamente en el modificador %~nx1

Saludos y Gracias excelente solucion.

P.D. ¿como haces lo de los colores  :P puse algunos pero no se tradujeron las etiquetas

leogtz

Si se puede, usa el FOR:
Código (dos) [Seleccionar]
@echo off
:code
set /p "ruta=Ingrese aqui la ruta del archivo : "
if not defined ruta (goto:code)
for %%_ in ("%ruta%") do (set "mi_file= %%~nx_")
echo : %mi_file%
pause>nul
goto:eof


Para los colores usa el GeSHi del foro, y selecciona DOS.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

gorgon12

De acuerdo leo...duda resuelta

hasta la proxima (pregunta)

Gracias, Saludos.