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 :

Débutant désire apprendre ! [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut Débutant désire apprendre !
    Bonjour à tous.

    Je débute dans le Batch et je dois dire que cela m'intéresse ! Voilà mon projet, en résumé : créer un petit outil qui nommerait l'OS et le SP utilisé, qui listerait ensuite les processus en cours, puis qui détecterait et afficherait sur un rapport la liste des logiciels de sécurité présents sur le pc.

    Voici un tout début de commande :

    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
    @color fc
    @echo off
    echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
    echo SecurityScan V.1.0 by Pierre750
    echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
    echo.
    @ver | find /i "xp" > nul
     @if %errorlevel%==0 echo Windows XP
    @ver | find /i "vista" > nul
     @if %errorlevel%==0 echo Windows Vista
    @ver | find /i "NT" > nul
     @if %errorlevel%==0 echo Windows NT
    @ver | find /i "2000" > nul
     @if %errorlevel%==0 echo Windows 2000
    @ver | find /i "ME" > nul
     @if %errorlevel%==0 echo Windows ME
    @ver | find /i "98" > nul
     @if %errorlevel%==0 echo Windows 98
    @ver | find /i "95" > nul
     @if %errorlevel%==0 echo Windows 95
    echo.
    @TASKLIST
    echo.
    echo Scan realise le :  %date% a : %time%
    echo.
    @pause
    Comme vous le voyez, j'ai ici l'OS, mais je ne trouve pas pour le SP. Les processus ne fonctionneront que sous XP via "Tasklist", ou je me trompe ?

    Il me manque à détecter un logiciel. Par exemple, j'ai Avira Antivir sur mon pc. J'aimerais qu'il le trouve et me note sur le rapport : AVIRA (par exemple)...et ainsi de suite.

    Puis j'aimerais, au départ, avoir le choix des langues.

    Il me manque aussi la commande pour afficher tout ceci dans un rapport txt.

    Et oui, ça fait beaucoup, j'ai lu beaucoup de tuto, mais retranscrit sur un .bat sur mon pc avec ce que je désire, cela ne fonctionne plus.

    Je vous remercie pour l'aide apportée et vous souhaite un très bon début de semaine.

    A bientôt.

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Service pack :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    systeminfo | find /i "Service Pack "
    Attention à l'espace après le "Pack" !
    Reste plus qu'à rediriger ça vers un fichier, un FOR avec tokens, etc. pour analyser le numéro comme tu désire le faire.

    Au passage, "systeminfo" est une mine d'or pour trouver plein d'informations en ligne de commande, son seul défaut étant que c'est une commande "lente" à exécuter... Mais bon, si tu dois taper 20 fois dedans, tu la rediriges vers un fichier temporaire, et tu travailles ensuite sur le fichier temporaire plutôt que de rappeler "systeminfo".
    Avec "net", "netsh" et "sc", ce sont des commandes permettant de savoir (presque) tout sur ton PC.


    Choix des langues : Ce sera via la commande "set /p" et un beau "if" derrière, je te laisse regarder les exemples.


    Diriger vers un fichier : Le secret est la commande "echo", les redirections (> et >>), voire la commande TYPE. Le sujet est relativement vaste, faudra attendre un peu que tu aie plus de matière dans ton batch pour commencer à voir les soucis.
    Sache que quoi qu'il arrive, si tu arrives à l'afficher à l'écran, tu pourras le mettre dans un fichier. Ne te préoccupe pas (encore) de la création du rapport, c'est un conseil.


    Filtrage des tâches : Cela revient à analyser une sortie via un FOR. Je t'encourage à aller voir l'aide de la commande FOR, et la FAQ Batch (commandes sur les fichiers). Dans cette FAQ, tu verras beaucoup d'exemples d'utilisation du FOR /F, qui est la clé d'à peu près tous les traitements complexes en Batch. Si tu le maîtrise, tu verras qu'il n'y aura pas beaucoup de "problèmes" qui te sembleront infaisables.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    Bonjour.

    Et d'abord merci pour cette belle réponse !

    Je vais plancher un peu plus sur les commandes. Sinon, j'ai déjà réussi à afficher les SP, merci !!

    Effectivement, si je vois les infos s'afficher, je pourrai certainement les mettre dans un fichier-texte ! Pour l'instant, je bloque toujours sur la détection d'un programme quelconque ! Et ce serait le plus important en sachant que lorsque je demande de lister le contenu du dossier Windows depuis "C:\Windows", pas de soucis, j'ai la liste de tous les fichiers présents ! Dès que je veux m'attaquer au dossier "Program Files", il me marque "Le fichier spécifié est introuvable" !

    M'en vais encore zyeuter les explications sur les commandes !

    A ++

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Indice : les noms avec des espaces s'entourent de guillemets, en ligne de commande...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    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,

    un complément de ce qui est dit:

    pour le service pack:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wmic os get csdversion | more +1
    tu peux aussi extraire cette valeur en passant par la base de registre, sinon systeminfo c'est bien aussi mais ça implique un traitement avec un FOR /F

  6. #6
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    Très intéressant !

    J'ai trouvé comment repérer les programmes. Je n'ai pas encore exactement ce que je veux, mais j'y suis presque !

    Je suis sur la commande set /p pour le choix de la langue, par exemple. J'essaie d'ajouter des sauts avec GOTO, mais ça ne passe pas !

    Regardez ce que j'ai écrit :
    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
    @color fc
    @echo off
    echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
    echo SecurityScan V.1.0 by Pierre750
    echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
    echo.
    set /p choice=Entrer votre langue : [F]ran‡ais ; [E]nglish :
    @if %choice%==F GOTO F
    echo.
    @ver | find /i "xp" > nul
     @if %errorlevel%==0 echo Windows XP
    @ver | find /i "vista" > nul
     @if %errorlevel%==0 echo Windows Vista
    @ver | find /i "NT" > nul
     @if %errorlevel%==0 echo Windows NT
    @ver | find /i "2000" > nul
     @if %errorlevel%==0 echo Windows 2000
    @ver | find /i "ME" > nul
     @if %errorlevel%==0 echo Windows ME
    @ver | find /i "98" > nul
     @if %errorlevel%==0 echo Windows 98
    @ver | find /i "95" > nul
     @if %errorlevel%==0 echo Windows 95
    echo.
    wmic os get csdversion | more +1
    echo.
    @TASKLIST
    echo.
    :F
    echo Scan realise le :  %date% a : %time%
    @pause
    Pour tester cette commande, donc, je voulais renvoyer à l'heure/date si on choisis le lettre f. Mais ça ne fonctionne pas. Déjà que l'on entre n'importe quelle lettre ou même chiffre, en appuyant entrée, le scan débute ! Et en appuyant f, cela ne fait rien. Je pense que c'est cette ligne qui bloque : @if %choice%==F GOTO F , non ?

    Merci.

  7. #7
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    Je me réponds !

    J'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set choice=
    set /p choice=Entrer votre langue : [F]ran‡ais - [E]nglish :
    if not %choice%==f echo !! SORRY !!
    if %choice%==f goto :F
    Qui fonctionne !

    Maintenant question à deux balles :

    if not %choice%==f echo !! SORRY !!>>> J'aimerais mettre d'autres lettres après "f" est-ce possible ou il faut faire d'autres lignes ? J'ai vu que la virgule et le point virgule ne fonctionnent pas.

    Merci.

  8. #8
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    Une dernière question pour ce soir : Pour afficher le rapport.txt du scan, c'est quelle commande ? Pour mes tests, svp.

    ++

  9. #9
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Pierre750 Voir le message
    if not %choice%==f echo !! SORRY !!>>> J'aimerais mettre d'autres lettres après "f" est-ce possible ou il faut faire d'autres lignes ? J'ai vu que la virgule et le point virgule ne fonctionnent pas.
    Tu peux déjà utiliser un "if /i" pour rendre ton test insensible à la casse. Pour le reste, je ne crois pas que le IF prenne des opérateurs logiques (ça existe en shell, c'est certain, mais pas en batch il me semble).
    Tu peux toutefois capitaliser ton code en faisant un sous-programme commun, afin de ne pas réécrire la même commande 20 fois.

    Petit truc : un "goto :eof" permet de terminer le batch sans pour autant flinguer l'interpréteur de commande comme le fait exit. Il n'y a pas besoin de définir l'étiquette ":eof", c'est tacite. De plus, c'est ce "goto :eof" qui te permettra de revenir d'un sous-programme appelé par CALL.
    Sans appeler ce GOTO, un batch se termine quand il arrive en fin de fichier : attention, le coup classique est de passer sur les sous-programmes en fin de traitement !

    Rajoutes donc un "goto :eof" avant ton ":F" afin de prévenir ce problème. D'autre part, essaie dans la mesure du possible de ne pas utiliser d'étiquettes aussi courtes, il y a un gros risque de confusion avec les variables de boucle (sur une lettre aussi).

    Dernier point : en début de programme, rajoutes après ton "@echo off" un "setlocal enableextensions" afin de t'assurer que non seulement tu as bien les extensions de commande, mais qu'en plus tu travailles sur une copie de ton environnement. Ceci offre l'avantage de ne pas polluer l'environnement de la ligne de commande avec tes variables de travail, tout en te déchargeant de la corvée de les nettoyer "à la main".

    Citation Envoyé par Pierre750 Voir le message
    Une dernière question pour ce soir : Pour afficher le rapport.txt du scan, c'est quelle commande ? Pour mes tests, svp.
    Pour initialiser un fichier "vide" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type NUL > monfichierlog.txt
    Pour ajouter une ligne dans le log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo Ligne de log >> monfichierlog.txt
    (Note le double ">>" de concaténation, alors que le ">" simple détruit le contenu préalable du fichier).

    On peut aussi ajouter à un fichier le résultat d'une commande complexe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo Tasklist filtré : >> monfichierlog.txt
    for /f "usebackq tokens=1 delims=," %%i in (`tasklist /v /fo csv`) do echo %%i >> monfichierlog.txt
    echo Fin du Tasklist >> monfichierlog.txt
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  10. #10
    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
    Citation Envoyé par Pierre750 Voir le message
    J'aimerais mettre d'autres lettres après "f" est-ce possible ou il faut faire d'autres lignes ? J'ai vu que la virgule et le point virgule ne fonctionnent pas.
    i.
    salut,

    je ne vois pas ce que tu cherches à faire,

    un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    set choice=
    set /p choice=Entrer votre langue : [F]ran‡ais - [E]nglish :
    if /i %choice%==f goto :F
    echo Sorry !!
    goto :EOF
    :F
    echo traitement si %choic%=F
    ne suffi pas ?

  11. #11
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    Merci à vous deux tout d'abord.

    Et bonjour ensuite !

    Je commence à y voir un peu plus clair, mais ça reste un peu brouillon pour moi, pour l'instant. Je suis automaticien de métier, sur des automates programmables industriels, j'ai d'autres habitudes avec les cellules !

    Bref, je ne vois pas ce que tu cherches à faire,

    Cela n'avait rien de vital, c'était plus pour tester un peu les commande ! En gros, je voulais dire si je ne choisis pas "f", je termine directement l'examen. ça ok, ça fonctionne.
    Mais si je veux aussi dire "si je ne choisis pas ni "f", ni "e", je termine l'examen ?

    Encore merci pour les explications.

    ++

  12. #12
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Ce sera alors quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if /i %choice%==f goto :fpart
    if /i %choice%==e goto :epart
    echo Choix invalide !
    goto :eof
    
    :fpart
    ......
    goto :eof
    
    :epart
    ......
    goto :eof
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  13. #13
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    Ah oui, c'est vrai que comme ça, c'est beaucoup mieux !

    C'est pas mal d'avoir des exemples réels, j'ai installé PowerBatch, je teste un peu pleins de choses pour voir, parce que lire les tutos, les fonctions de commandes... c'est beau, mais retranscrit, c'est plus pareil !

    Bon, je vais tester tout ça et je reviendrai sûrement vous embêter un peu !

    Bonne fin d'après-midi.

  14. #14
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    Bon j'abandonne pour l'instant, je dois être vraiment c**, impossible d'afficher le résultat dans un rapport !!!

    J'ai réussi à créer un fichier texte, à afficher une partie du scan, mais pas tout...

    Vais aller prendre l'air, moi !!

  15. #15
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    Bonjour !

    Voilà, fait ! Pour le rapport, sorry, c'est ok ! Je devais avoir le cerveau trop chaud.

    Bon, ça avance, j'ai bien planché, avec des "collègues". Je vous remercie pour les réponses, je vais faire des tests et encore des tests pour voir cela fonctionner.

    Merci au forum.

    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extjs 4.2.2 Débutant comment apprendre sans sauter les étapes
    Par geforce dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 20/02/2015, 08h21
  2. [Débutant] Langage fonctionnel à apprendre ?
    Par kromartien dans le forum Langages fonctionnels
    Réponses: 83
    Dernier message: 10/03/2010, 13h27
  3. Réponses: 29
    Dernier message: 12/07/2007, 12h55
  4. Réponses: 4
    Dernier message: 11/02/2007, 10h48
  5. [Débutant] Conseils pour apprendre Java
    Par emary dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2006, 00h31

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