PB avec boucle FOR - Shell/Batch - Programmation
Marsh Posté le 18-07-2005 à 15:53:45
Bon j'ai reussi la boucle mais j'arrive a avoir que la derniere ligne de mon fichier text. 
Voila le batch qui marche sauf si on modifie plusieur fichier y a moyens dans raté quelques un! 
 
@echo off 
Mode con:lines=8 cols=42 
Echo Programme pour surveiller un changement dans un fichier: 
echo. 
echo Entrer le chemin du fichier a surveiller: 
set /P FICHIER=Par exemple C:\FICHIER! :  
MD c:\temp 
:RE1 
dir %FICHIER% /tw>C:\TEMP\temp.txt 
 
:RE 
cls 
dir %FICHIER% /tw>C:\TEMP\temp1.txt 
FC /b C:\TEMP\temp.txt C:\TEMP\temp1.txt 
if %ERRORLEVEL% LEQ 0 goto RE 
 
dir /OD /TC %FICHIER% | find "%date:~5,15%" /i > C:\TEMP\temp2.txt 
echo Le %date:~5,15% a %TIME%>>C:\TEMP\alors.txt 
echo Surveillance de %FICHIER% en cours:>>C:\TEMP\alors.txt 
 
for /F "tokens=1,2,3,4,5 delims= " %%i in (C:\TEMP\temp2.txt) do set VERI1=%%i & set VERI2=%%j & set VERI3=%%l 
echo Le %VERI1% a %VERI2% Fichier:%VERI3% >>C:\TEMP\alors.txt 
start C:\TEMP\alors.txt 
:FIN 
goto RE1 
 
Si y a des gens qui son pas partie en vacances need help! 
Surtout sa doit pas etre trés dur pour un Expert du dos malgrés qu'il n'y en ait plus beaucoup car vbs a pris le dessus! 
Marsh Posté le 18-07-2005 à 21:42:33
| Code : 
 | 
 
Sinon, mets les noms des fichiers en variable, c'est pas joli et pratique de les réécrire chaque fois.
Marsh Posté le 19-07-2005 à 08:58:42
Yes Merci j'avait essailler mais pas de chance sa marchais pas! 
Un grand Merci car la ca marche NIKEL! 
 
@echo off 
Mode con:lines=8 cols=42 
Echo Programme pour surveiller un changement dans un fichier: 
echo. 
echo Entrer le chemin du fichier a surveiller: 
set /P FICHIER=Par exemple C:\FICHIER! :  
MD c:\temp 
:RE1 
dir %FICHIER% /tw>C:\TEMP\temp.txt 
 
:RE 
cls 
dir %FICHIER% /tw>C:\TEMP\temp1.txt 
FC /b C:\TEMP\temp.txt C:\TEMP\temp1.txt 
if %ERRORLEVEL% LEQ 0 goto RE 
 
dir /OD /TW %FICHIER% | find "%date:~5,15%" /i > C:\TEMP\temp2.txt 
dir /OD /TA %FICHIER% | find "%date:~5,15%" /i >> C:\TEMP\temp2.txt 
echo. >>C:\TEMP\alors.txt 
echo Le %date:~5,15% a %TIME%>>C:\TEMP\alors.txt 
echo Surveillance de %FICHIER% en cours:>>C:\TEMP\alors.txt 
 
for /F "tokens=1,2,3,4,5 delims= " %%i in (C:\TEMP\temp2.txt) do (  
echo Le %%i a %%j Fichier:%%l>>C:\TEMP\alors.txt) 
start C:\TEMP\alors.txt 
:FIN 
goto RE1 
 
Voila: 
Dit moi se que tu en pense et si y a des truc a modifier ou améliorer! LOL Y'en a toujours! 
En tout cas Merci j'ai bien compris la boucle FOR!
Marsh Posté le 19-07-2005 à 19:14:59
Good !  
 
 
Sinon, rien de nouveau à te proposer, si ce n'est toujours mettre des noms de fichier en variable. 
 
set LOG=C:\TEMP\alors.txt 
echo blabla>>%LOG% 
 
comme ça tu pourras le changer plus facilement (question pratique et esthétique  )
) 
 
Et à la place de  
tokens=1,2,3,4,5 
on peut écrire 
tokens=1-5 
 
Ah aussi, il y a les balises 
| Code : 
 | 
 
pour publier correctement le code (plus de problème de smileys). 
 
Sinon, tu n'as pas considéré le cas où l'utilisateur entre un nom de fichier contenant des espaces.
Marsh Posté le 18-07-2005 à 11:57:21
Salut:
J'ai fait un logiciel qui fait un log des fichier creer et permet de surveiller les changement dans un repertoire.
Mon pb est dans la boucle FOR qui devrait me servir a ecrire dans alors.txt les fichiers du dir creer a la date du jour dans mon dossier.
Je maitrise pas trop la boucle for si vous pouvez m'aider se serait pas mal!!!
@echo off
MD c:\temp
dir C:\CAWIN /tw>C:\TEMP\temp.txt
:RE
cls
dir C:\CAWIN /tw>C:\TEMP\temp1.txt
FC /b C:\TEMP\temp.txt C:\TEMP\temp1.txt
if %ERRORLEVEL% LEQ 0 goto RE
echo Le %date:~5,15% a %TIME%>C:\Docume~1\hb\Bureau\alors.txt
echo Fichier %FICHIER% Modifié>>C:\Docume~1\hb\Bureau\alors.txt
dir /OD /TC C:\CAWIN>C:\TEMP\temp2.txt
for /f "tokens=1,2,3,4 delims=" %%a in (C:\TEMP\temp2.txt) do if %%a EQU %date:~5,15% do echo %%d>>C:\Docume~1\hb\Bureau\alors.txt
:FIN
pause
start C:\Docume~1\hb\Bureau\alors.txt
La boucle FOR por favor!!!