MS-DOS : Boucle For, IF et Find imbriqués, probleme d'affectation

MS-DOS : Boucle For, IF et Find imbriqués, probleme d'affectation - Shell/Batch - Programmation

Marsh Posté le 27-06-2008 à 11:58:49    

Plutôt qu'une explication compliqué, je préféré un exemple simple :
 


for %%i in (C:\UNDOSSIER\*.csv" ) do (
 
 for /f %%k in ('echo "%%i" ^|FIND /c "TOTO"') do set varune=%%k  
 for /f %%j in ('echo "%%i" ^|FIND /c "TITI"') do set vardeux=%%j  
 
 if %varune%==1 (
  echo CECI EST UN FICHIER TOTO : "%%i"
  rem on fait d'autres actions spécifiques au fichier TOTO
 )
 
 if %vardeux%==1 (
  echo CECI EST UN FICHIER TITI : "%%i"
  rem on fait d'autres actions spécifiques au fichier TITI
 )
)


 
En résumé :
Je prend tout les fichiers d'extension CSV présent dans C:\UNDOSSIER  
 
Pour chaque fichier CSV, si il contient TOTO dans son nom, je fait certaines actions, si il contient TITI, j'en fait d'autres.
 
Le problème, c'est que je suis un gros nul en MS-DOS, et que mon bout de code ne fonctionne pas.
Et je n'arrive même pas à savoir pourquoi.
J'ai l'impression que mes variables varune et vardeux ne sont pas correctement assignées, ou alors pas tout le temps... Bref, je comprend pas.
 
Si quelqu'un peu m'aider...
Merci d'avance.


---------------
Il faut arreter l'informatique le jour où l'on trouve 1024g dans 1kg
Reply

Marsh Posté le 27-06-2008 à 11:58:49   

Reply

Marsh Posté le 27-06-2008 à 17:02:08    

UP!  
 
Il y a pas l'air d'avoir grand monde qui fait du MS-DOS... C'est vrai que c'est limité, mais c'est bien pratique pour ce genre de bout de code (pas de compilation)...
 
C'est pour le boulot, alors une réponse avant ce soir serait grandement appréciée ! :)


---------------
Il faut arreter l'informatique le jour où l'on trouve 1024g dans 1kg
Reply

Marsh Posté le 27-06-2008 à 19:43:14    

Hello , tu n'as pas besoin de créer des variables
 
Je te le mets comme ça car c'est facile à comprendre mais on peut faire plus court ( mais plus compliqué à comprendre si tu n'as pas l'habitude )
 

@echo off & cls
 
dir /b "C:\UNDOSSIER\*.csv">tmp.txt
 
for /f "delims=" %%A in ('type tmp.txt ^| find /I "TOTO"') do (
echo CECI EST UN FICHIER TOTO : "%%A"
les commandes que tu veux pour les TOTO)
 
for /f "delims=" %%A in ('type tmp.txt ^| find /I "TITI"') do (
echo CECI EST UN FICHIER TITI : "%%A"
les commandes que tu veux pour les TITI)

Reply

Marsh Posté le 01-07-2008 à 13:57:44    

Cool, je connaissait pas "delims" !
Vu l'urgence, j'ai fait l'équivalence en C#, mais pour du code si simple, vaut mieux du batch !
 
Merci


---------------
Il faut arreter l'informatique le jour où l'on trouve 1024g dans 1kg
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed