Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
soucis avec for+findstr+errorlevel
Auteur Message
Répondre en citant
Message soucis avec for+findstr+errorlevel 
Bonjour à tous,

Pour des raisons professionnelles je me suis lancé dans la création d’un petit batch pour automatiser la même tache sur un parc d’équipement réseau.

En somme j’aimerai lire un fichier CSV et pour chaque ligne, extraire une adresse ip si elle existe, exécuter un .exe avec l’@ip précédemment extraite. Ce .exe donne un résultat en fichier .txt dans le dossier ou se trouve le .exe

Une fois toutes les lignes du fichier CSV traitées, J’aimerai scanner le dossier ou se trouve les .txt, afin de les déplacer dans un dossier à la date du jour et écraser les fichiers .txt si déjà présent.

aujourd'hui j'ai réussi à effectuer une boucle for sur mon .csv voici mon code :

Code:

SET Tool="C:\Tools\winxp_v1.2.1\"
SET ListNE=C:\A\export\NEListALL.csv
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
rem ECHO %ListNE%
FOR /f  "tokens=4,6 delims=," %%a in (%ListNE%) do (
set !test! = %%b
echo !test!
echo !test! |FindStr /R "[0-255]\.[0-255]\.[0-255]\.[0-255]"
echo !ERRORLEVEL!
echo %ERRORLEVEL%
IF !ERRORLEVEL! EQU 0  (%tool%tool.exe --ne_type "x" --ne_ip "!test!" --card_type "Ct" --cmd_file "%Tool%check.txt")
)



cepedant je n'arrive pas à utiliser ERRORLEVEL.

%ERRORLEVEL% = 0 tout le temps et !ERRORLEVEL!=1 tout le temps ...

d'avance merci pour votre aide



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message soucis avec for+findstr+errorlevel 
Salut,

oui c'est normal, %errorlevel% ne fonctionne pas dans une boucle Wink

Par contre, le résultat de cette commande est-il correct ?
Code:
echo !test! |FindStr /R "[0-255]\.[0-255]\.[0-255]\.[0-255]"





______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message soucis avec for+findstr+errorlevel 
Merci pour ta réponse

Il me semble que ça fonctionne oui. Je l'ai testé à part sur des chaînes mis dans des variables ... Errorlevel prenait 0 quand c'était ok et 1 quand la chaine ne correspondais pas au pattern.

Cependant mes test n'étaient peut être pas suffisant tu vois une erreur?

Pour réagir a ce que tu dis sur errorlevel, j'ai chiné une peu sur les forums et souvent les gens disent qu'il faut utiliser des variables particulières avec des "!" Mais quand j'essaye ça ne fonctionne effectivement pas. :/



Répondre en citant
Message soucis avec for+findstr+errorlevel 
Salut,

oui tout à fait, dans une boucle il faut utiliser !! pour prendre en compte chaque itération de FOR
perso je testerais comme ça:
Code:

SET Tool="C:\Tools\winxp_v1.2.1\"
SET ListNE=C:\A\export\NEListALL.csv
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR /f  "tokens=4,6 delims=," %%a in (%ListNE%) do (
    echo %%b |FindStr /R "[0-255]\.[0-255]\.[0-255]\.[0-255]"
    IF ERRORLEVEL 0  (%tool%tool.exe --ne_type "x" --ne_ip "%%b" --card_type "Ct" --cmd_file "%Tool%check.txt")
)


Wink




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message soucis avec for+findstr+errorlevel 
Merci j'essaye ça demain a la première heure ... Cependant tu aurais un site sur le pourquoi du comment ...

Pourquoi un coup %variable% un autre coup %%variable ou !variable!

Là je suis dans une boucle for il aurait fallu si j'ai bien compris utiliser !variable! ... Mais la en faite c'est variable tout court et sans signe de comparaison Very Happy

J'ai trouver quelque site mais ils ne développe pas trop ils résument souvent la situation comme moi juste avant. Cas 1 c'est ça cas 2 c'est ça mais il semblerait que ça fonctionne pas toujours Sad



Répondre en citant
Message soucis avec for+findstr+errorlevel 
Alors, %% ne fonctionne tout simplement pas directement dans une boucle !
ceci ne te donnera rien:
Code:
@echo off
for %%A in (un deux trois quatre) do (
   set TEST=%%A
   echo %TEST%
   )
pause


Tu peu placer un %% après pour afficher la dernière itération de for:
Code:
@echo off
for %%A in (un deux trois quatre) do (
   set TEST=%%A
   )
echo %TEST%
pause


sinon pour l'affichage de chaque itération de for, tu dois utiliser ceci:
Code:
@echo off
setlocal enabledelayedexpansion
for %%A in (un deux trois quatre) do (
   set TEST=%%A
   echo !TEST!
   )
pause


N'hésites pas si tu as des questions Wink




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message soucis avec for+findstr+errorlevel 
j'ai essayé

Code:
ERRORLEVEL 0


malheureusement j'ai pas réussi à faire fonctionner mon code de cette façon :/


je sais vraiment pas comment utiliser les variables dans une boucle for

j'ai essayé :

    %ERRORLEVEL% EQU 0
    !ERRORLEVEL! EQU 0
    ERRORLEVEL 0


rien de tout de tout ça fonctionne ... dans les deux premiers cas la variable n'évolue pas ... dans le dernier cas j'ai l'impression que ce n'est pas interprété comme une variable ... je sèche Sad



Répondre en citant
Message soucis avec for+findstr+errorlevel 
Hum tu as avais certainement raison depuis le début ... il semblerait que l'expression du findstr est incorrect ...



Répondre en citant
Message soucis avec for+findstr+errorlevel 
Salut,
bon j'ai testé pleins de trucs, chez moi errorlevel fonctionne bien tout seul dans une boucle ...
Par contre en regardant de plus près, tu peux surement te passer d'errorlevel Razz
Chez toi le echo te donne quelque chose ?

Code:

set Tool="C:\Tools\winxp_v1.2.1\"
set ListNE=C:\A\export\NEListALL.csv
setlocal enabledelayedexpansion
for /f  "tokens=4,6 delims=," %%A in ('type %ListNE% ^| findstr /r "[0-255]\.[0-255]\.[0-255]\.[0-255]"') do (
    :: ----------
    :: petit echo pour tester
    echo %%B
    :: ----------
    %Tool%tool.exe --ne_type "x" --ne_ip "%%B" --card_type "Ct" --cmd_file "%Tool%check.txt")
    )
pause





______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Message soucis avec for+findstr+errorlevel 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch