2016-12-19 2 views
0

j'ai eu un processus qui se coince si elle na pas trouver sa cible donc j'appelle un fichier batch pour le tuer après quelque tempstaskkill un fichier batch qui tue une tâche

start C:\file\server\bin\killput.bat 
C:\file\server\bin\putty.exe -ssh 192.168.0.210 -l oracle -pw oracle -m C:\file\server\bin\List_AIX.txt 

la chose est de savoir comment tuer le cmd exécutant la commande kill si mon processus est exécuté

Code

pour mon fichier batch killput.bat

Timeout 20 
taskkill /f /im putty.exe 
+0

Donc, fondamentalement, vous voulez vérifier wheter Runns mastic correctement ou non, non? Et si vous voyez que ça s'est coincé, vous voulez tuer le fichier batch qui tuerait le processus de mastic? Je suggère: Exécuter putty à partir de la ** commandline ** comme vous le faites avec votre premier fichier batch maintenant (-> juste la ligne inférieure). Si le mastic agit correctement et est fait quoi qu'il fasse, tapez 'echo% ERRORLEVEL%' et appuyez sur [Entrée]. Si la valeur est différente de 0, je pense que je peux aider. Ce serait mon chemin si ... – geisterfurz007

Répondre

0

J'ai vérifié avec mon mastic et en cas d'échec, il ne maintiendra aucun lien de sorte que vous ne pourrez pas voir sur "netstat "sortie de commande et si vous ne le trouvez pas dans cette sortie, cela signifie que la connexion a échoué ou vient de se terminer. Alors je me suis dit que vous pourriez faire quelque chose comme ça sur votre lot kill:

timeout 20 

SET tempfl=c:\windows\temp\netstatresult.txt 
netstat -aonb>%tempfl% 

for /f "delims=" %i in ('findstr /i /C:putty %tempfl%') do SET output=%i 
if NOT DEFINED %output% taskkill /f /im putty.exe 

del %tempfl% 

Donc, ce écrit la sortie de netstat à un fichier temporaire, après que nous vérifions si la sortie du commmand contient le mastic de sous-chaîne en utilisant findstr. Si findstr a eu des résultats la variable sortie est définie avec la valeur sinon elle ne sera pas définie, donc s'il y a une valeur, cela signifie que putty est en cours d'exécution et vous n'avez pas à le tuer et s'il y a n'est pas vous pouvez tuer le processus de mastic.

Ensuite, il y a juste un simple si taskkill fonctionne si la variable n'est pas définie, puis le fichier temporaire créé est supprimé.

Juste en vous assurant si vous ne savez pas ce que netstat est utilisé pour: https://commandwindows.com/netstat.htm

0
Start C:\file\server\bin\putty.exe -ssh 192.168.0.210 -l oracle -pw oracle -m C:\file\server\bin\List_AIX.txt 
Timeout 20 
Taskkill /IM PuTTY.exe