Estoy tratando de recorrer un archivo de texto como este:

"11/05/2016",Paris,Snowy,02
N/A,February,London,15
"11/05/2016",Berlin,Sunny,25

Para que se vea así:

2016/11/05,Paris,Snowy,02
N/A,London,Rainy,15
2016/11/05,Berlin,Sunny,25

Estoy atascada con

FOR /F "tokens=1,2,3* delims=,/" %%G IN (weather.txt) DO @echo %%I %%G %%H %%J

Alguna idea por favor?

0
Pierre Garcin 7 dic. 2016 a las 00:23
2
¿Por qué utilizar / como delimitador?
 – 
Thomas Weller
7 dic. 2016 a las 00:24
Debe agregar los caracteres que delimita nuevamente a su eco. @echo %%I\%%G\%%H,%%J,%%K,%%L y cambie tokens a 1-6.
 – 
user6017774
7 dic. 2016 a las 00:32
Para poner 2016 en primer lugar, pero genera problemas con N / A y no resuelve el "" problema.
 – 
Pierre Garcin
7 dic. 2016 a las 00:40
FOR /F "tokens=1,2,3* delims=," %%G IN (weather.txt) DO @echo %%~I,%%~G,%%~H,%%~J?
 – 
npocmaka
7 dic. 2016 a las 00:51
No me di cuenta de las comillas. Use esto como una cadena - tokens^=1-3^ delims^=^,/^" sin comillas adjuntas. Escapamos de todos los caracteres delimitadores, por lo que no es necesario que esté entre comillas.
 – 
user6017774
7 dic. 2016 a las 00:57

1 respuesta

La mejor respuesta
@ECHO OFF
SETLOCAL EnableExtensions
FOR /F "usebackq tokens=1,* delims=," %%G IN ("weather.txt") DO (
  FOR /F "tokens=1-3 delims=/" %%g IN ("%%~G") DO (
    if "%%~i"=="" (
      rem N/A                 input -> output
      echo(%%~G,%%~H
    ) else (
      rem 11/05/2016          input
      echo(%%i/%%g/%%h,%%H
      rem 2016/11/05          output
    )
  )
)

Las plantillas de tokens en los bucles %%G y %%g son las siguientes:

G            H
"11/05/2016",Paris,Snowy,02
 g  h  i

G   H
N/A,London,Rainy,15
g h                     3rd token (%%i) is empty

3
JosefZ 7 dic. 2016 a las 01:17