blacksun
Goto Top

Bat2Exe - Batch-Datei enthält Schleife und der Exe-Task darf nicht als CMD-Task im Taskmanager auftauchen

Hallo,

ich bin auf der Suche nach einem Converter, der mir aus einer Batch-Datei einen Exe-Datei macht.
Ich habe zwar diesen Beitrag hier gefunden:

bat2exe

Aber die sehr alte Version hier http://www.computerhope.com/dutil.htm kann nicht mit einer Schleife in Form von Sprungmarken umgehen, die neuere Version gibt's scheinbar nirgends mehr

Ich habe folgende Test-Batch:

@echo off

set errorlevel=1

:start
dir test.*|find /I "test.pnp"  
IF errorlevel==1 (goto 2) ELSE goto File1

:File1
echo "File 1 gefunden!!!"  
goto end

:2
dir hanstest.*|find /I "hanstest.png"  
IF errorlevel==1 (goto start) ELSE goto File2

:File2
echo "File 2 gefunden"  
goto end

:end
exit


Der Converter sollte dabei folgende Eigenschaften haben:

- er sollte mit der oben genannten Form der Schleife umgehen können

- die erzeugte Exe sollte im Taskmanager als eigener Task auftauchen, z.B. in Form von test.exe, und nicht wie bei einer mit dem oben verlinkten alten Bat2Exe als cmd im Taskmanager auftauchen. Grund: Die Exe sollte man eindeutig identifiziere können, so dass man sie mit einem Taskkill auch beenden kann. Ein Taskkill auf cmd.exe beendet alle Batch-File, die dann noch aktiv sind

- schön, aber nicht unbedingt notwendig, wäre wenn man auch Sprungmarken verwenden kann, die länger als 8 Zeichen sind. Das ganze braucht nur in einer Windows Umgebung zu laufen.

Viele Grüße
Martin

Content-Key: 61859

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

Printed on: April 20, 2024 at 04:04 o'clock

Member: bastla
bastla Jun 20, 2007 at 09:33:55 (UTC)
Goto Top
Hallo blacksun!

Zumindest zum Thema "taskkill" könnte ich einen Vorschlag machen: Benenne einfach das CMD-Fenster mit einem eindeutigen Fenstertitel, etwa
title Batch0816
Danach kannst Du (aus einem anderen CMD-Fenster) mit
taskkill /FI "WINDOWTITLE eq Batch0816" >nul  
die richtige CMD-Instanz eliminieren.

Grüße
bastla
Mitglied: 36539
36539 Jun 20, 2007 at 10:08:46 (UTC)
Goto Top
Hallo,
"Bat 2 EXE" kann es (kostet aber) http://www.cadkas.de/downgertools21.php
Kannst ja erstmal testen.

gruß
Member: blacksun
blacksun Jun 20, 2007 at 10:23:16 (UTC)
Goto Top
Hallo,
"Bat 2 EXE" kann es (kostet aber)
http://www.cadkas.de/downgertools21.php
Kannst ja erstmal testen.

gruß


Hallo onegasee59,

dieses Tool hab ich auch gefunden und getestet. Hat aber leider den Nachteil, dass wenn ich per Taskkill die Exe beende, dass die CMDs, die im Rahmen der exe gestartet wurden, noch weiterlaufen. Es müssten alle Befehle (find, dir, goto, usw) im Kontext der exe-Datei laufen, so dass diese auch sofort beendet werden, wenn die exe "abgeschossen" wird.

Aber mir geht's es nur darum, das CMD eindeutig identifizieren zu können, so dass ich genau dieses eine CMD beenden kann, ohne weitere cmds zu beenden. Von daher hört sich der Vorschlag von bastla sehr vielversprechend an.


@euch beide
Hättet ihr mir auch ne Idee, wie ich es mit einer Batch hinbekommen könnte, dass diese garantiert nur einmal gestartet ist.

Sprich wenn die Batch 0816 schon läuft, dass diese dann nicht nochmal ausgeführt wird.

Ich möchte einfach vermeiden, dass wenn das ganze unbeaufsichtigt läuft, dass dann die Batch in der Form, wie ich sie oben als Beispiel-CMD gepostet habe, dass diese zig mal läuft und das ganze dann an die Wand fährt.

Viele Grüße
Martin
Member: bastla
bastla Jun 20, 2007 at 10:52:09 (UTC)
Goto Top
Hallo blacksun!

Könnte nach dem selben Prinzip wie oben funktionieren, etwa
@echo off & setlocal
tasklist /FI "WINDOWTITLE eq Batch0816" 2>nul | findstr /i "cmd.exe">nul && exit  
title Batch0816
pause
Solange dieser Batch läuft, solltest Du die gleiche Batchdatei nicht nochmals starten können (oder jedenfalls nur für sehr kurze Zeit face-wink).

Grüße
bastla
Mitglied: 36539
36539 Jun 20, 2007 at 11:09:12 (UTC)
Goto Top
Hallo,
...den Nachteil, dass wenn ich per Taskkill die Exe beende, dass die CMDs, die im Rahmen der exe gestartet wurden, noch weiterlaufen.
Gib mir mal den taskill-Befehl genau den Du benutzt hast und welche der beiden Optionen hast Du zum Erstellen der EXE benutzt?

gruß