IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Boucle dans un fichier


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 94
    Par défaut Boucle dans un fichier
    Bonjour à tous,

    Mon niveau depuis ma dernière question a un peu progressé mais ya encore des choses que je ne comprends pas !

    Je cherche à lire in fichier pour récupérer des infos lignes par lignes dedans afin de lancer pour chaque ligne une ou plusieurs action.

    fonctionnellement parlant je teste un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for /f "delims=" %%i in ('type liste.txt') do (
    mes actions....)
    mais ne n'ai pas l'impression qu'il boucle :/

    mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    @echo off
    for /f "delims=" %%i in ('type liste.txt') do (
    echo %%i
    set tmpfile=tmp%%i.txt
    set filepath=C:\dev\%%i\logs
    	
    ::Listage du répertoire
    :getlist
    dir %filepath% /O:-D > %tmpfile%	
    
    ::Vérification de la présence du fichier
    find "%today%" "%tmpfile%" > nul
    if %ERRORLEVEL% neq 0 (
    	echo Pas de fichier trouve
    	del "%tmpfile%") ELSE goto :getfile
    
    :getfile
    ::Récupération du nom du fichier - local
    for /f "tokens=5 delims= " %%j in ('find "%today%" "%tmpfile%"') do set filename=%%j
    
    ::Vérification de la non-présence du terme ANOMALIE
    find "ANOMALIE" "%filepath%\%filename%" > nul
    if %ERRORLEVEL% neq 1 (
    	echo Anomalie détectee
    	del "%tmpfile%") ELSE goto :chkend
    
    :chkend
    ::Vérification que le fichier s'est bien terminé
    find "Fin de traitement " "%filepath%\%filename%" > nul
    if %ERRORLEVEL% neq 0 (
    	echo Fichier non termine
    	del "%tmpfile%") ELSE echo OKY DOKY
    
    ::Suppression du fichier temp
    del "%tmpfile%" )
    mais en final, si je mets plusieurs lignes dans le fichier liste.txt, je n'ai que les check pour la 1ere ligne.....à croire qu'il ne modifierai pas les variables lors du 2ème passage !!??

    merci de votre aide !

  2. #2
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    voici quelques remarques:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    
         1	@echo off
         2	for /f "delims=" %%i in ('type liste.txt') do (
         3	echo %%i
         4	set tmpfile=tmp%%i.txt
         5	set filepath=C:\dev\%%i\logs
         6		
         7	::Listage du répertoire
         8	:getlist
         9	dir %filepath% /O:-D > %tmpfile%	
        10	
        11	::Vérification de la présence du fichier
        12	find "%today%" "%tmpfile%" > nul
        13	if %ERRORLEVEL% neq 0 (
        14		echo Pas de fichier trouve
        15		del "%tmpfile%") ELSE goto :getfile
        16	
        17	:getfile
        18	::Récupération du nom du fichier - local
        19	for /f "tokens=5 delims= " %%j in ('find "%today%" "%tmpfile%"') do set filename=%%j
        20	
        21	::Vérification de la non-présence du terme ANOMALIE
        22	find "ANOMALIE" "%filepath%\%filename%" > nul
        23	if %ERRORLEVEL% neq 1 (
        24		echo Anomalie détectee
        25		del "%tmpfile%") ELSE goto :chkend
        26	
        27	:chkend
        28	::Vérification que le fichier s'est bien terminé
        29	find "Fin de traitement " "%filepath%\%filename%" > nul
        30	if %ERRORLEVEL% neq 0 (
        31		echo Fichier non termine
        32		del "%tmpfile%") ELSE echo OKY DOKY
        33	
        34	::Suppression du fichier temp
        35	del "%tmpfile%" )
    Ligne {4}: ici tu as créer la variable "tmpfile",pour l'utiliser par la suite, tu doit activé
    l'ERV "expansion retardée des variables"
    Ligne {7}: Les "::" peuvent provoquer des results inatendus il vaut mieux utiliser REM à la place
    Ligne {9}{12}[15}{19}{25}{32}{35}: la variable "tmpfile" va afficher la même valeur "même remarque active l'ERV"
    Ligne {13}{23}{30}: %ERRORLEVEL% est une variable comme les autres variables, ou bien tu active l'ERV et tu utilises (!ERRORLEVEL!) à la place de (%ERRORLEVEL%), ou bien utilises la secondes syntaxe: (ERRORLEVEL)
    Ligne {15}{25}: ces branchement Goto n'ont aucun rôle ici il vaut mieux utiliser à la place:
    IF ERRORLVEL 1 (action si FALSE) ELSE (action si TRUE)

Discussions similaires

  1. boucle dans un fichier
    Par yan44 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 06/12/2010, 12h09
  2. Boucle dans un fichier xsl
    Par zerobug dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/08/2008, 09h21
  3. Boucle dans un fichier .sql
    Par mouaa dans le forum Outils
    Réponses: 1
    Dernier message: 21/04/2008, 18h05
  4. [Bash]:Afficher une boucle dans un fichier ?
    Par byloute dans le forum Linux
    Réponses: 2
    Dernier message: 03/04/2007, 11h12
  5. Réponses: 2
    Dernier message: 22/05/2006, 00h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo