[BATCH] Error al final de la ejecucion

Iniciado por baldovi_6, 3 Noviembre 2018, 17:21 PM

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

baldovi_6

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.



baldovi_6

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>




baldovi_6

Cita de: 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>





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