encontrar posicion de valor en una cadena en batch

Iniciado por dj kuzmar, 2 Febrero 2010, 19:07 PM

0 Miembros y 1 Visitante están viendo este tema.

dj kuzmar

Hola amigos tengo el siguiente problema, tengo una lista de archivos con extensión sql, por ejemplo 1.sql, 2.sql, prueba.sql, almaceno todo esto con un dir/b > lista.txt, dentro de un for voy leyendo uno a unos los archivos

FOR /F %%i in (lista.txt) do (
echo !i!

lo que necesito es  solo el nombre del archivo sin la extension

por ejemplo que muestre asi

1
2
prueba

estuve haciendo pruebas con
echo %i:~0,1%

tambien echo %i:~-3% con esto logro que me muestre sql
como pudeo saber donde esta ".sql"   en este ejemplo

prueba.sql   esta en la posicion 7  entonces si hago echo %i:~0,6% me mostraria

prueba, es lo que necesito , encontrar "." y luego restarle uno a la posicion y que me muestre todo


leogtz

A lo bruto:
@echo off
for %%_ in (*.sql) do (
for /f "tokens=1 delims=." %%} in ("%%_") do (
echo %%}
)
)
rem tokens=2 -> Te da la extension


Lo más eficiente:

for /f "tokens=*" %%_ in ('dir /b *.sql') do (
echo %%~n_
)
Código (perl) [Seleccionar]

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

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