Ayudita con duda en este script

Iniciado por Hanzo_lx, 29 Abril 2010, 22:33 PM

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

Hanzo_lx

HOla a todos a ver si vosotros veis el fallo porque me estoy volviendome loco:

estaba haciendome un bat para renombrar unos archivos segun mis necesidades y me queda algo asi:


@echo off

echo             =========================================
echo             =                                                                                       =
echo             =             Renamer                                                             =
echo             =                                                                                       =
echo             =========================================




:data


set /p Historia=Escriba el numero de historia:

set /p Ojo=Escriba el tipo de ojo:

echo             =========================================
echo               Los datos son correctos?    
echo               Numero de historia: %Historia%     
echo               Tipo de ojo: %Ojo%     
echo             =========================================

set /p respuesta=1 es Si, 2 es NO:

if %respuesta% EQU 1 (goto :renombrar) else (goto :data)




:renombrar
set  contador=0


for /F "tokens=1,4*" %%i in ('dir') do (
                         set /a contador=%contador%+1

echo  %%j %%k %Historia%_%Ojo%_%contador%_%%i.txt)


pause


el tema es que debe renombrar los archivos con nombre de historia+tipo+contador de archivo+fecha de creacion de archivo

el contador lo inicializo a cero y en cada iteracion deberia aumentar en 1 pero siempre me saca 0 y no caigo en que estoy haciendo mal

la primera parte del echo es el nombre del archivo original para esa iteracion (%%j %%k) y la segunda parte(%Historia%_%Ojo%_%contador%_%%i.txt) como deberia quedar despues del renombrado

que os parece?

gracias

leogtz

Dentro de bucles FOR, debes de utilizar las variables con !!, y claro, anteponiendo la sentencia:

setlocal enabledelayedexpansion

Pruebalo así y comenta:

Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
echo             =========================================
echo             =                                                                                       =
echo             =             Renamer                                                             =
echo             =                                                                                       =
echo             =========================================
:data
set /p "Historia=Escriba el numero de historia: "
set /p "Ojo=Escriba el tipo de ojo: "
echo             =========================================
echo               Los datos son correctos?    
echo               Numero de historia: %Historia%     
echo               Tipo de ojo: %Ojo%     
echo             =========================================
set /p "respuesta=1 es Si, 2 es NO: "
if %respuesta% EQU 1 (goto :renombrar) else (goto :data)
:renombrar
set  /a contador=0
for /F "tokens=1,4*" %%i in ('dir') do (
set /a contador+=1
echo  %%j %%k !Historia!_!Ojo!_!contador!_%%i.txt
)
pause
Código (perl) [Seleccionar]

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

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

Hanzo_lx

Hola muchisimas gracias, podrias comentarme donde hace referencia esto que me has explicado en el manual de BATCH que hay en esta misma pagina?

es para leermelo y entenderlo bien

de nuevo muchas gracias

leogtz

http://foro.portalhacker.net/index.php/topic,86033.0.html
Código (perl) [Seleccionar]

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

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