FOR sur une liste qui a des champs vides
Posté : 17 mars 2011 11:13
Bonjour,
Je suis en train d'écrire un bat pour filtrer des données d'une base de donnée exportée en csv selon la valeur du 3eme champ (si le 3eme champ a cette valeur, je recopie la ligne dans un autre fichier, sinon je passe à la ligne suivante). Le problème étant que certains de ces champs sont vides.
Globalement, j'ai a disposition des fichiers du type
val1;val2;val3;val4
val5;val6;;val7
val8;;val9;val10
J'utilise une boucle for du genre :
Code :
Mon problème est que quand il y a deux delims cote à cote (champ vide), il ne considère pas un token vide entre les deux. Donc pour la seconde ligne de mon fichier, le script considère ca :
%%a = val5
%%b = val6
%%c = val7
%%d = "" (il ne considère pas de 4eme champ)
alors que je voudrais ca :
%%a = val5
%%b = val6
%%c = "" (chaine vide)
%%d = val7
J'ai eu beau chercher sur google, puis sur batcher.fr, je ne trouve pas la moindre piste de solution alors que j'ai trouvé quelques posts sur le même problème.
Bref si vous avez des suggestions, elles sont bienvenue, et merci d'avance pour votre aide !
Je suis en train d'écrire un bat pour filtrer des données d'une base de donnée exportée en csv selon la valeur du 3eme champ (si le 3eme champ a cette valeur, je recopie la ligne dans un autre fichier, sinon je passe à la ligne suivante). Le problème étant que certains de ces champs sont vides.
Globalement, j'ai a disposition des fichiers du type
val1;val2;val3;val4
val5;val6;;val7
val8;;val9;val10
J'utilise une boucle for du genre :
Code :
Code : Tout sélectionner
for /f "tokens=1-4 delims=;" %%a in fichier) do (
if %%c==%valeur que je veux% (
echo %%a;%%b;%%c;%%d>>%autre_fichier%
)
)
%%a = val5
%%b = val6
%%c = val7
%%d = "" (il ne considère pas de 4eme champ)
alors que je voudrais ca :
%%a = val5
%%b = val6
%%c = "" (chaine vide)
%%d = val7
J'ai eu beau chercher sur google, puis sur batcher.fr, je ne trouve pas la moindre piste de solution alors que j'ai trouvé quelques posts sur le même problème.
Bref si vous avez des suggestions, elles sont bienvenue, et merci d'avance pour votre aide !