stoepfel
Goto Top

Fortschrittsanzeige in Batch - Anzeigedauer einer geöffneten Exe

Hallo,

mit einer Batch öffne ich eine Exe. Nun soll in der Kommandozeile so lange eine Fortschrittsbalken angezeigt werden (durch fortlaufende Punkte), bis diese besagte Exe wieder automatisch geschlossen wird.

Wie kann ich dies realisieren? Leider bin ich kein Experte in der Batch-Programmierung und freue mich über jegliche Ideen.

Vielen Dank.
Stefan

Content-Key: 141554

Url: https://administrator.de/contentid/141554

Printed on: April 24, 2024 at 09:04 o'clock

Mitglied: 77559
77559 Apr 27, 2010 at 13:36:49 (UTC)
Goto Top
Hallo Stefan,

ein Fortschrittsbalken hat eine definierte Länge und über den prozentualen Anteil soll man erkennen wie lange der Vorgang noch ca. dauert.
Deine Pünktchen sind also nur eine Pseudoberuhigung das sich noch etwas tut.
Das Problem ist, das die Batch nur die Kontrolle hat wenn die Exe per
Start "Titel" x:\Pfad\deine.Exe 
In den Hintergrund geschickt wird.

Die Batch kann also allenfalls über eine Schleife prüfen ob der Process der Exe noch läuft oder das Fenster noch existiert; deinen Punkt setzen, ein Bisschen warten und das ganze wiederholen.
IMO etwas viel Aufwand mit zweifelhaftem Ergbenis.

Gruß
LotPings

PS: Willkommen im Forum
Member: rubberman
rubberman Apr 27, 2010 at 14:20:05 (UTC)
Goto Top
Hallo stoepfel,

LotPings hat selbstverständlich Recht. Ein Progressbar ist das, was du vorhast nicht - und Batch ist für solche Vorhaben auch suboptimal.
Aber, um zu zeigen wie sowas prinzipiell aussieht, hier mal am Beispiel Notepad:
@echo off &setlocal

:: *Notepad als Beispiel:
start "" "notepad.exe"  

:: *Schleife laufen, bis Prozess sichtbar ist
:loop1
tasklist /nh /fi "imagename eq notepad.exe" 2>&1|findstr /b /i /l /c:"notepad.exe">nul &&goto loop2  
ping -n 1 localhost>nul
goto loop1

:: *Schleife laufen und Punkte malen, bis Notepad geschlossen ist
:loop2
<nul set /p "=."  
tasklist /nh /fi "imagename eq notepad.exe" 2>&1|findstr /b /i /l /c:"notepad.exe">nul ||goto ahead  
ping -n 2 localhost>nul
goto loop2

:ahead
echo.

pause

Grüße
rubberman
Mitglied: 77559
77559 Apr 27, 2010 at 14:55:28 (UTC)
Goto Top
Hallo rubberman,
schön das du mir die Arbeit abgenommen hast face-wink

Deine ansonsten gut ausgeführte Batch hat bei mir nicht funktioniert, weil notepad.exe hier nur ein Starter für mein TextPad ist und deshalb endlos gewartet hat.

Vielleicht wäre einfach eine kurze Wartezeit am Anfang eine Alternative - wenn die Anwendung danach nicht läuft endet die Batch eben.

Gruß
LotPings
Member: rubberman
rubberman Apr 27, 2010 at 17:30:55 (UTC)
Goto Top
Zitat von @77559:
Hallo rubberman,
schön das du mir die Arbeit abgenommen hast face-wink

Hallo Lord ...aber gerne doch face-wink

Zitat von @77559:
Deine ansonsten gut ausgeführte Batch hat bei mir nicht funktioniert, weil notepad.exe hier nur ein Starter für mein
TextPad ist und deshalb endlos gewartet hat.

Ist ja 'ne bodenlose Frechheit face-smile Dann ist mspaint.exe sicher auch nur ein Starter für Paint.Net face-wink So kann das mit den Beispielen nicht funktionieren ...

Zitat von @77559:
Vielleicht wäre einfach eine kurze Wartezeit am Anfang eine Alternative - wenn die Anwendung danach nicht läuft endet
die Batch eben.

Jo, oder einen Counter in die erste Schleife einbauen.

Zitat von @77559:
Gruß
LotPings

Grüße zurück
rubberman