wie ein bestimmtes Fenster per .bat schließen

FakerDAL

Ensign
Registriert
März 2003
Beiträge
189
Hallo,

ich hab hier zwei fortlaufende .bat dateien in je einem cmd Fenster laufen und möchte eine davon mit einer weiteren .bat datei schließen/beenden lassen. Die beiden .bat Dateien führen den selben Prozess (exe) aus, allerdings mit unterscheidlichen parametern.

Ich habe es erst mit taskkill versucht, allerdings kann ich da meines wissens nur den prozess beenden lassen was zur Folge hat, dass beide .bat dateien (fenster) geschlossen werden.

Es gibt auch noch den befehl "close", allerdings habe ich eine 64bit windows version und die close dafür nirgends gefunden.


hat jemand noch einen Tip wie ich das lösen könnte?
 
man könnte ein

Code:
exit

ans ende der bat packen! wenn die fertig ist geht das fenster !?!
 
Taskkill kann man auch Prozesse mit Hilfe einer Prozess-ID schließen.

/PID


EDIT:
@c0by:
zwei fortlaufende .bat dateien
 
Hallo,
versuche damit:
Code:
@echo off & setlocal 
wmic process get processid,executablepath /format:csv|findstr /i "c:\\blub\\blabla.exe">%temp%\PInfo.txt 
for /f "tokens=3 delims=," %%i in (%temp%\PInfo.txt) do set "PID=%%i" 
echo %PID%
Läuft aber nicht mit win2k!!
 
Zuletzt bearbeitet: (PInfo.txt wird ins Temp Dir geschreiben, kannst aber natürlich anpassen)
mit prozess id kann ich nicht abeiten, weil die sich ja immer wieder nach einem neustart von einer der bat dateien ändert.

mit exit kann ich auch nicht arbeiten, da ja so die fortlaufende bat datei direkt geschlossen werden würde.
 
Du kannst das Problem nur mit PID lösen!
Bei jedem Start PID neu auslesen und von der Batch auslesen die denn Prozess schließen soll.
 
puh, wie soll ich denn das machen?

versteh den zusammenhang nicht
 
Damit kannst du ein Prozess Pid schließen... (notepad.exe)
Code:
@echo off
For /F "tokens=2" %%i in ('tasklist ^| Find "notepad.exe"') Do Set Task=%%i
echo %task%
TaskKill /PID %task%
Jetzt kannst du noch die Pid in eine txt Datei reinschreiben und dann später von einer anderen Batch Datei beenden lassen, oder wie auch immer du sie brauchst...
 
das funzt mit der exe nicht, da der prozess ja mit untersciedlichen parametern zweimal ausgeführt ist
 
Schau dir doch mal das an und gegeben falls Anpassen :)
Ansonsten kannst du mein ersten Codestück nehmen und die Pids noch in pid.txt reinschreiben.
Danach schreibst du eine zweite Batch, diese Beendet dann den Task, dazu liest sie die pid.txt aus.
Das Problem wird wohl nur sein wie du die richtige pid raus findest ;)
 
was ein glück bin ich nicht grad der batch freak :(

wenn ich im taskmanager bei Anwendungen das entsprechende bat fenster über "task beenden" schließe, führt doch windows auch einen bestimmten befehl dafür uas. den müsste man nur wissen?
 
Hallo,
also ich weiß jetzt nicht wie deine batch Dateien aufgebaut sind aber hier mein Vorschlag mit der Notepad.exe
Code:
@echo off
::Taskliste bevor Notepad gestartet ist
tasklist /V>%temp%\vor.txt

::Notepad starten
start notepad.exe

::Taskliste nachdem Notepad gestartet ist
tasklist /V>%temp%\nach.txt

::Prozess ID des Notepad herausfiltern
for /F "tokens=2 delims= " %%i in ('fc %temp%\vor.txt %temp%\nach.txt^|find "notepad.exe"') do set PID=%%i

::Prozess ID ausgabe
echo PID: %PID%

::temporäre Dateien löschen
del %temp%\vor.txt
del %temp%\nach.txt

::mit Ping eine Pause von 5 Sekunden einlegen
ping -n 5 127.0.0.1 > NUL

::den Notepad anhand der ermittelten PID killen
TASKKILL /PID %PID%
Du kannst mehrere Notepad.exe gestartet haben, er wird nur die von ihm selber gestartete Notepad.exe Beenden!

Du muss den Code nur noch so anpassen, dass er deine Cmd.exe startet und später die Beendet die er soll.
 
Zurück
Oben