Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: baldovi_6 en 3 Noviembre 2018, 17:21 pm



Título: [BATCH] Error al final de la ejecucion
Publicado por: baldovi_6 en 3 Noviembre 2018, 17:21 pm
Buenas tardes a tod@s.

Estoy intentando crear un pedazo de codigo que me cree 12 carpetas, una para mes, pero al final de la ejecucion me da un error que me gustaria entender, para solucionarlo .

Os dejo el codigo:

@ECHO OFF

CLS
ECHO.
PUSHD C:\Temp
FOR /L %%i IN (1,1,12) DO ( CALL :Mes %%i)

: Mes

SET Meses=JANUARY FEBRUARY MARCH APRIL MAY JUNE JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER
ECHO Valor del parametro: %1
ECHO.
FOR /F "Tokens=%1" %%a IN ("%Meses%") DO (
   IF %1 GEQ 10 (
      ECHO  %1-%%a
      MKDIR %1-%%a
   ) ELSE (
      ECHO  0%1-%%a
      MKDIR 0%1-%%a
      )   
GOTO :EOF      
)
ECHO.
GOTO :EOF


Y ahora la salida que me da:

Valor del parametro: 1

 01-JANUARY
Valor del parametro: 2

 02-FEBRUARY
Valor del parametro: 3

 03-MARCH
Valor del parametro: 4

 04-APRIL
Valor del parametro: 5

 05-MAY
Valor del parametro: 6

 06-JUNE
Valor del parametro: 7

 07-JULY
Valor del parametro: 8

 08-AUGUST
Valor del parametro: 9

 09-SEPTEMBER
Valor del parametro: 10

 10-OCTOBER
Valor del parametro: 11

 11-NOVEMBER
Valor del parametro: 12

 12-DECEMBER
Valor del parametro:

10 was unexpected at this time.

C:\temp>


El caso es que no acabo de ver porque sale la linea que dice:
10 was unexpected at this time.

El texto que dice Valor del parametro es añadido mio para control. Al final no aparecera, ya que lo quitare.

Muchisimas gracias.




Título: Re: [BATCH] Error al final de la ejecucion
Publicado por: baldovi_6 en 3 Noviembre 2018, 18:48 pm
Repasando el codigo, me he dado cuenta que no habia puesto en GOTO :EOF detras del FOR.

He dejado el codigo tal que asi:


@ECHO OFF

CLS
ECHO.
PUSHD C:\Temp
FOR /L %%i IN (1,1,12) DO ( CALL :Mes %%i)
GOTO :EOF

: Mes

SET Meses=JANUARY FEBRUARY MARCH APRIL MAY JUNE JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER
FOR /F "Tokens=%1" %%a IN ("%Meses%") DO (
   IF %1 GEQ 10 (
      ECHO  %1-%%a
   REM   MKDIR %1-%%a
   ) ELSE (
      ECHO  0%1-%%a
   REM   MKDIR 0%1-%%a
      )         
)
GOTO :EOF


Y la salida me queda ahora como yo queria.



 01-JANUARY
 02-FEBRUARY
 03-MARCH
 04-APRIL
 05-MAY
 06-JUNE
 07-JULY
 08-AUGUST
 09-SEPTEMBER
 10-OCTOBER
 11-NOVEMBER
 12-DECEMBER

C:\temp>





Título: Re: [BATCH] Error al final de la ejecucion
Publicado por: baldovi_6 en 3 Noviembre 2018, 18:50 pm
Repasando el codigo, me he dado cuenta que no habia puesto en GOTO :EOF detras del FOR.

He dejado el codigo tal que asi:


@ECHO OFF

CLS
ECHO.
PUSHD C:\Temp
FOR /L %%i IN (1,1,12) DO ( CALL :Mes %%i)
GOTO :EOF

: Mes

SET Meses=JANUARY FEBRUARY MARCH APRIL MAY JUNE JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER
FOR /F "Tokens=%1" %%a IN ("%Meses%") DO (
   IF %1 GEQ 10 (
      ECHO  %1-%%a
   REM   MKDIR %1-%%a
   ) ELSE (
      ECHO  0%1-%%a
   REM   MKDIR 0%1-%%a
      )         
)
GOTO :EOF


Y la salida me queda ahora como yo queria.



 01-JANUARY
 02-FEBRUARY
 03-MARCH
 04-APRIL
 05-MAY
 06-JUNE
 07-JULY
 08-AUGUST
 09-SEPTEMBER
 10-OCTOBER
 11-NOVEMBER
 12-DECEMBER

C:\temp>





Los MKDIR los he comentado porque me habia cansado de borrar las carpetas una y otra vez....
:-)