Batch - For Tokens et whitespaces
Bonjour a tous,
Je suis confronte a un probleme lors de la transformation d'un fichier CSV en Batch:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
@echo off
title Business Partner - CSV Transformation
cls
set newfile=BPTransform.csv
set counter=0
for /f "tokens=* delims=;" %%a in ( BPartner.csv ) do set line=%%a &call :setcontent
:setcontent
REM --------------------
REM Set content
REM --------------------
echo %counter%
if /i "%counter%" equ "0" call :setheader
pause
echo %line% > line.tmp
for /f "tokens=1-20,* delims=;" %%a in ( line.tmp ) do set line=%%a;%%b;%%c;%%d;%%e;%%f;%%g;%%h;%%i;%%j;%%k;%%l;%%m;%%n;%%o;%%p;%%r;%%s;%%t;%%u;toto;%%v
echo %line%
del line.tmp
REM --------------------
REM Add line
REM --------------------
echo ZECI_STR_BUPA_UPLOAD_I;%line% >> %newfile%
set /a counter+=1
goto :eof
:setheader
REM --------------
REM Add the header
REM --------------
echo %line% > line.tmp
for /f "tokens=1 delims=;" %%b in ( line.tmp ) do echo ZECI_CONTAINER_I;%%b; >> %newfile%
del line.tmp
goto :eof
:end |
En realite, dans la boucle de set content (pas tres propre, je l'avoue), j'aimerai conserver les espaces mais FOR /F les supprime.
Exemple:
Dans ce cas B doit etre egal a ''. Est-ce possible de resoudre ce probleme ?
J'ai essaye des doubles boucles imbriquees .. pas mieux.
Vous remerciant,
L.