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

Résolu
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   -  
barnabe0057 Messages postés 14455 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.


A voir également:

3 réponses

Dosman Messages postés 1446 Date d'inscription   Statut Contributeur Dernière intervention   216
 
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
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
montre un exemple de ce que contient %log%
0
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
%log% contient cette chaine de caractère :

[plink.exe]

La chaine de caractère est précédée d'un espace.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
essayer
if "%%a"==" [pink.exe]" ...
0
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
La condition ne fonctionne toujours pas, je ne comprend pas.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
il ne faut mettre aucun code entre les 2 lignes, sinon %errorlevel% sera faux
0
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
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