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

Résolu/Fermé
barnabe0057 Messages postés 14120 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 4 décembre 2022 - 26 févr. 2014 à 19:00
barnabe0057 Messages postés 14120 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 4 décembre 2022 - 6 mars 2014 à 18:39
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

Dosman Messages postés 1444 Date d'inscription mardi 1 mai 2012 Statut Contributeur Dernière intervention 26 septembre 2017 213
27 févr. 2014 à 10:58
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 14120 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 4 décembre 2022 4 847
27 févr. 2014 à 20:43
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 18567 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 1 décembre 2022 5 568
27 févr. 2014 à 14:11
hello
montre un exemple de ce que contient %log%
0
barnabe0057 Messages postés 14120 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 4 décembre 2022 4 847
27 févr. 2014 à 15:42
%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 18567 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 1 décembre 2022 5 568
27 févr. 2014 à 15:55
essayer
if "%%a"==" [pink.exe]" ...
0
barnabe0057 Messages postés 14120 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 4 décembre 2022 4 847
Modifié par barnabe0057 le 1/03/2014 à 23:19
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 18567 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 1 décembre 2022 5 568
2 mars 2014 à 11:09
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 14120 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 4 décembre 2022 4 847
4 mars 2014 à 17:31
La condition ne fonctionne toujours pas, je ne comprend pas.
0
dubcek Messages postés 18567 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 1 décembre 2022 5 568
5 mars 2014 à 16:12
il ne faut mettre aucun code entre les 2 lignes, sinon %errorlevel% sera faux
0
barnabe0057 Messages postés 14120 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 4 décembre 2022 4 847
6 mars 2014 à 18:39
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