Spezielle Batch Datei

StrammerMax93

Banned
Registriert
Sep. 2015
Beiträge
1.227
Hey Leute,

ich habe hier ein Batchfile das "Start.bat" heißt und ein bestimmtes Programm startet.

Sieht ca. so aus: "cgminer.exe blabli blaublubb"

Ich möchte jetzt, dass dieses Programm cgminer.exe alle 60 minuten geschlossen wird, 30 Sekunden abgewartet wird und dann wieder mit "cgminer.exe blabli blaublubb" gestartet wird.

Blabliblabub sind Parameter die dem Programm cgminer.exe mitgegeben werden müssen.


Kann ich das in der Batch selbst machen oder ist es einfacher eine neue Batch Datei zu erstellen mit Timer, die dann auf Start.bat referenziert?
 
Richte dir einen Scheduled Task für alle 60 Minuten ein. Dann schreibst du nen PowerShell-Script, dass genau das macht was du beschrieben hast. Bitte hört doch mit Batch und VBS auf :(.

Sinngemäß: stop-process cgminer.exe -force; start-sleep 30s; start "cgminer.exe" -argumentlist "blabli blaublubb";
 
oder du machst es so:

:start
start jfkdslfjsdlf.exe
timeout /s 3600
taskkillt /F /IM dfskjkldfs.exe /T
goto start

ist es das was du wolltest?

falls du nicht willst das es auch jede stunde startet kannst du das halt abändern
 
wirelessy schrieb:
Richte dir einen Scheduled Task für alle 60 Minuten ein. Dann schreibst du nen PowerShell-Script, dass genau das macht was du beschrieben hast. Bitte hört doch mit Batch und VBS auf :(.

Sinngemäß: stop-process cgminer.exe -force; start-sleep 30s; start "cgminer.exe" -argumentlist "blabli blaublubb";


Ich kenne mich weder mit Scheduled Tasks noch mit PowerShell aus.. daher würde für mich ein Batchfile näher liegen.
Ergänzung ()

o_LyRiOn_o schrieb:
oder du machst es so:

:start
start jfkdslfjsdlf.exe
timeout /s 3600
taskkillt /F /IM dfskjkldfs.exe /T
goto start

ist es das was du wolltest?

Die 30 Sekunden Pause fehlen noch vorm Neustart - sonst sollte es passen. Der Task soll gekillt werden, 30 Sekunden Pause und dann wieder gestartet werden.

Müsste dann so aussehen oder?

:start
timeout /s 30
start cgminer.exe -parameter
timeout /s 3600
taskkillt /F /IM cgminer.exe /T
goto start


Was ist /F und /IM ?
 
Zuletzt bearbeitet:
Müsste dann so aussehen oder?

:start
timeout /s 30
start cgminer.exe -parameter
timeout /s 3600
taskkillt /F /IM cgminer.exe /T
goto start


Was ist /F und /IM ?

richtig wird so klappen

was die parameter betrifft kannst du unter "taskkill /?" nachlesen
 
Zuletzt bearbeitet:
Sowas macht man nicht, das ist schlechtes - weil unrobustes - programmieren. Was machst du, wenn aus irgendnem Grund der Prozess verreckt? Durch nen Scheduled Task hast du da ne gewisse Resilienz drin. Mach es so wie oben von mir geschrieben, einfacher und besser gehts nicht.

//e: Und wenn du mit so ner Batchfile klarkommst, bekommst du es auch hin dir eben nen geplanten Task zusammen zu klicken im Taskplaner. Oh, und das kannst du natürlich auch mit dem Batchfile machen. Die Wiederholung musst du dir absolut nicht im Script zusammenkrebsen!

//e2: Und du findest "taskkillt /F /IM cgminer.exe /T" echt einfacher als "Stop-Process cgminer.exe -Force"?
 
Zuletzt bearbeitet:
StrammerMax93 schrieb:
Nein... klappt so leider nicht.

Es öffnet Fenster in der Endlosschleife...

dan hast du was bei deinem Programm namen falsch gemacht oder bei dessen Pfad oder mit deinem paramter

@wirelessy
ich geb dem TE das was er will ...was das beste ist kannst du ihn selber entscheiden lassen
 
die batch file müsste also so aussehen

"
@echo off

:start
Timeout /s 30

start "C:\Users\Dein Name\Desktop\Ordner\Weiter\XYZ.exe"
Timeout /s 3600

Taskkill /F /IM XYZ.exe /T
cls

GOTO start

"

bei dem unterstrichenen falls die exe sich im benutzerverzeichniss ist ohne "" schreiben und gleich das verwenden start %userprofile%\desktop\Ordner.......xyz.exe
so sparst du dir ""
 
Zuletzt bearbeitet:
Das hier will ich starten:

cgminer --blake256 -I 14 -o http://dcr.suprnova.cc:9111 -u StrammerMax93.worker1 -p 123abc --vectors 1 --no-submit-stale --gpu-threads 1 --scan-time 2 --queue 4 --temp-cutoff 96

Dateipfad ist:
C:\Users\Mining\Desktop\cgminer-decred-w64-20160204-2


Sollte dann so aussehen?

@echo off

:start
Timeout /t 30

start "C:\Users\Mining\Desktop\cgminer-decred-w64-20160204-2\cgminer.exe --blake256 -I 14 -o http://dcr.suprnova.cc:9111 -u StrammerMax93.worker1 -p 123abc --vectors 1 --no-submit-stale --gpu-threads 1 --scan-time 2 --queue 4 --temp-cutoff 96"

Timeout /t 3600

Taskkill /F /IM cgminer.exe /T
cls

GOTO start



Passt das so?
Geht eigentlich nur um den Dateipfad ob da "" gebraucht werden und wie ich die Parameter mitgebe.


Und das Problem ist, dass cgminer eine cmd.exe aufruft.
Ich glaube der Prozess heißt garnicht cgminer.exe sondern cmd.exe
Ergänzung ()

Habe es jetzt so:

@echo off

:start
Timeout /t 5

cgminer --blake256 -I 14 -o http://dcr.suprnova.cc:9111 -u StrammerMax93.worker1 -p abc123 --vectors 1 --no-submit-stale --gpu-threads 1 --scan-time 2 --queue 4 --temp-cutoff 96

Timeout /t 20
Taskkill /F /IM cmd.exe /T
cls

GOTO start



Programm startet - wartet 5 Sekunden, beginnt dann zu laufen - aber es hört nicht wie gewollt auf nach 20 Sekunden sondern läuft einfach unendlich lange weiter.

Der Task von cgminer.exe heißt cmd.exe
Ergänzung ()

Kann es sein, dass man cmd.exe nicht killen kann, weil das Batchfile ja selbst als cmd ausgeführt wird und sich so selbst terminieren würde?
 
Zuletzt bearbeitet:
wirelessy schrieb:
Kannst du, aber mit Batch wüsst ich nicht wie. Das ist ja nicht ein cmd prozess, sondern der cgminer spawnt einen zweiten.

Und wie würdest du es machen?

Habe gerade mit powershell rumprobiert... aber das ist ja der reinste abfu**** wenn man sich damit nicht auskennt...

Hatte sowas hier:
start-sleep 30s; start "cgminer.exe" --blake256 -I 14 -o http://dcr.suprnova.cc:9111 -u StrammerMax93.worker1 -p abc123 --vectors 1 --no-submit-stale --gpu-threads 1 --scan-time 2 --queue 4 --temp-cutoff 96; start-sleep 3600s; stop-process "cmd.exe" -force;


Aber keine Ahnung wo man das überhaupt hinschreiben muss in dem Powershell bzw. wie man das ausführt und wo man angibt, dass das in einer Endlosschleife laufen soll.
 
Zuletzt bearbeitet:
Batch sind Stapelverarbeitungsdateien, laufen also solange, bis ein Anweisung beendet wird, erst dann wird die nächste Anweisung ausgeführt.

Innerhalb der Batch verwendet man zum Ausführen anderer Programm die Anweisung Start oder Call. Ohne Start/Call bleibt die Batch einfach stehen, bis die Anwendung geschlossen wird, wie dieses Beispiel zeigt.

Code:
@echo off&setlocal

:Anfang
Notepad.exe
Timeout /t 30
Goto Anfang

Mit Start läuft die ausführende Batch weiter.

Code:
@echo off&setlocal

:Anfang
Start Notepad.exe
Timeout /t 30
Goto Anfang

Der Fehler hier liegt in der Start-Anweisung, Start interpretiert die ersten Anführungszeichen als Fensternamen, der Dateipfad muss also getrennt in Anführungszeichen geschrieben werden:

Code:
@echo off

:start
Timeout /t 30

start "Fenstername" "C:\Users\Mining\Desktop\cgminer-decred-w64-20160204-2\cgminer.exe --blake256 -I 14 -o http://dcr.suprnova.cc:9111 -u StrammerMax93.worker1 -p 123abc --vectors 1 --no-submit-stale --gpu-threads 1 --scan-time 2 --queue 4 --temp-cutoff 96"

Timeout /t 3600

Taskkill /F /IM cgminer.exe /T
cls

GOTO start
 
Super, und was muss in "Fenstername" rein? Oder soll da Fenstername drin stehen?


Edit habe es.

Die Parameter mussten auserhalb von der Klammer hin, dann läuft alles so wie es soll.

Vielen Dank an alle und besonders an @frogger9
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    36,1 KB · Aufrufe: 208
Zuletzt bearbeitet:
nur den Pfad in Anführungszeichen setzen:

Code:
start "" "C:\Users\Mining\Desktop\cgminer-decred-w64-20160204-2\cgminer.exe" --blake256 -I 14 -o http://dcr.suprnova.cc:9111 -u StrammerMax93.worker1 -p 123abc --vectors 1 --no-submit-stale --gpu-threads 1 --scan-time 2 --queue 4 --temp-cutoff 96

Die Frage ist andernfalls, wo die Batch liegt?

Bei Fenstername kann irgendetwas oder auch gar nichts stehen.
 
Zurück
Oben