Lancer un .bat à partir d'un autre .bat [Résolu/Fermé]

Signaler
Messages postés
13613
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juillet 2021
-
Messages postés
13613
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juillet 2021
-
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

Messages postés
1444
Date d'inscription
mardi 1 mai 2012
Statut
Contributeur
Dernière intervention
26 septembre 2017
201
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.
Messages postés
13613
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juillet 2021
4 480
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.
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 324
hello
montre un exemple de ce que contient %log%
Messages postés
13613
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juillet 2021
4 480
%log% contient cette chaine de caractère :

[plink.exe]

La chaine de caractère est précédée d'un espace.
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 324
essayer
if "%%a"==" [pink.exe]" ...
Messages postés
13613
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juillet 2021
4 480
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.
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 324
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)
Messages postés
13613
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juillet 2021
4 480
La condition ne fonctionne toujours pas, je ne comprend pas.
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 324
il ne faut mettre aucun code entre les 2 lignes, sinon %errorlevel% sera faux
Messages postés
13613
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juillet 2021
4 480
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 ;