Lancer un .bat à partir d'un autre .bat

Résolu
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je cherche à automatiser la création d'un tunnel ssh inversé, j'ai donc créée un script batch qui fonctionne très bien.

Maintenant je cherche à contrôler la présence du tunnel, j'ai donc créée un deuxième script qui lance le premier si jamais il ne détecte pas le tunnel :


rem @echo off
set PATH=%ProgramFiles(x86)%\PuTTY;%PATH%
set log=%userprofile%\log_plink.txt
rem
rem verification de la presence du tunnel
rem
:check
netstat -b -n | find "plink.exe" > %log%
for /f %%a in (%log%) do (
if %%a==" " start c:\users\barnabe\desktop\plink_short.bat
ping 127.0.0.1 -n 5 -w 4000 > nul
)
goto check
exit

Voilà le problème : pas moyen de lancer le premier à partir du deuxième, j'ai essayé avec start et avec call.

Merci d'avance pour votre aide.

3 réponses

  1. Dosman Messages postés 1500 Statut Contributeur 217
     
    Bonjour,
    Normalement, il faut utiliser start (je viens d'essayer avec une boucle simple ça marche), le problème doit donc venir de la condition du if.
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      Le problème provenait du raccourci que je lance avec la commande start, je l'ai renommé en supprimant le .bat à la fin du nom et maintenant la commande start fonctionne.
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    montre un exemple de ce que contient %log%
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      %log% contient cette chaine de caractère :

      [plink.exe]

      La chaine de caractère est précédée d'un espace.
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      essayer
      if "%%a"==" [pink.exe]" ...
      0
  3. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    Voilà le code qui merdouille :


    @echo off
    set log=%userprofile%\report.txt
    rem
    :check
    echo nimportequoi > %log%
    netstat -b -n | find "firefox.exe" > %log%
    rem
    for /f %%a in (%log%) do (
    if "%%a"=="[firefox.exe]" (goto :check) else (echo la condition fonctionne enfin)
    )
    goto :check
    exit


    J'ai volontairement modifié et simplifié le code pour mieux identifier le problème.

    Merci d'avance pour votre aide.
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      si find "firefox.exe" ne trouve rien , le fichier sera vide et la boucle for ne va rien faire donc sauter le if. Essayer avec errorlevel
      netstat -b -n | find "firefox.exe" > NUL
      if %errorlevel% NEQ 0 (goto :check) else (echo la condition fonctionne enfin)
      0
    2. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      La condition ne fonctionne toujours pas, je ne comprend pas.
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      il ne faut mettre aucun code entre les 2 lignes, sinon %errorlevel% sera faux
      0
    4. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      Ca fonctionne à la perfection, merci beaucoup pour ton efficacité.

      Je vais enfin pouvoir avancer dans la création de mon outil personnel.

      Bonne soirée et à bientôt sur CCM ;
      0