Hi,
ich will das bei meinen Skript eine Liste ist wo steht wer alles bei den XXX Minecraft Server online ist,
das geht doch irgendwie das kann man von der cmd.exe durch list auslesen aber es soll in mein Skript sein, wie geht das :O
Hi,
ich will das bei meinen Skript eine Liste ist wo steht wer alles bei den XXX Minecraft Server online ist,
das geht doch irgendwie das kann man von der cmd.exe durch list auslesen aber es soll in mein Skript sein, wie geht das :O
StdoutRead
[/autoit]Mfg
Fail egal nichts.
StdOutRead("cmd.exe") oder was... Und wenn ich das z.B jetzt hätte wie bekomme ich die Userliste
Oder StdOutRead("list") ??
Klick einfach mal auf die blaue Schrift - da wirst du auf die deutsche Online-Hilfe zum StdoutRead-Artikel weitergeleitet.
Mfg
Wie soll ich zu die SErver CMD zugreifen?
Der ist gut ...
Auf den Server zugreifen...
Träum weiter x.x
Das einzigste was du kannst ist auf den Client zugreifen.
Du brauchst die PID und der IO-Stream muss aktiviert werden.
Danach kannst du das ganze aus der Konsole auslesen.
Es gibt bereits ein Thread dazu. Geh doch mal googlen...
Die PID ändert sich doch immer, also wenn ich es starte dann öffne dann änderts sich, ich habe auch so eine Idee.
Zitat
If NOT ProcessExists("cmd.exe") Then
MsgBox(16, "Kleiner Fehler!", "Die Server Konsolle muss offen sein." & @CRLF & "Also der Server muss gestartet sein.")
Exit
EndIf
Ich mach dir mal 2 Vorschläge:
1. Bitte arbeite an deiner Ausdrucksweise bzw. an deinen Formulierungen, Satzbau und der Rechtschreibung. Es ist wirklich schwer deine Postings zu verstehen und grausam diese zu lesen. Wenn man schon selbst keine Lösung findet oder zu faul ist selbst danach zu suchen (google / Forensuche) sollte man wenigstens etwas mehr Arbeit in seine Postings stecken, damit auch jemand versteht was man eigentlich für ein Problem hat. (bezieht sich jetzt nicht nur auf diesen Thread)
2. Du scheinst absoluter Anfänger in Sachen Autoit zu sein. Daher rate ich dazu, dass du dich erstmal an leichteren Dingen versuchst und dir ein gewisses Grundwissen über die Sprache Autoit aneignest. Dazu bietet sich zum Beispiel das Buch von peethebee an ( https://autoit.de/index.php?page=Thread&threadID=11898 ) und auch die deutsche Autoit Hilfe mit den zugehörigen Beispielscripten der einzelnen Funktionen.
Ich arbeite schon ein halbes Jahr mit AutoIt und ich denke das reicht für das was ich immer mache.
Ich brauch doch nur die Hilfe!
Ich dachte man kann hier Hilfe kriegen, habe ich mich voll geriert.
So bin jetzt schon sehr weit, was mir jetzt nur noch fehlt ist wie kann ich anstadt die richtige CMD die Server CMD nehmen ..
Mach die normale Commandline zur "Server"-Commandline.
Du startest den Server doch über eine Batch-Datei ("runme.bat" o.Ä.), oder?
Dann schau, was in der Batch-Datei steht, und mach das auch in deiner CMD.
lg
Natürlich ändert sich die PID jedes Mal wenn du die Datei startest, aber das muss dich nicht daran hindern die herauszufinden.
Wenn du ein CUI Programm mit Run von deinem Script aus startest (du musst als letzten Parameter von Run 0x2 verwenden) gibt Run die PID des gestarteten Prozesses zurück. Die PID kannst du nun mit StdoutRead verwenden um alles auszulesen was normalerweise in die Konsole des Programms geschrieben wird.
Das wäre die Lösung deines Problems und wurde hier bereits mehrfach in anderer Form geschrieben ;). Und deine Beiträge sind wirklich schwer zu verstehen, nimm dir doch ein bisschen mehr Zeit sie zu formulieren, dann können wir dir schneller helfen (das ist wirklich nicht böse gemeint).
chesstiger das check ich nicht so! Also das ist bis jetzt mein Script:
Zitat#include <Constants.au3>
ZitatAlles anzeigenIf NOT ProcessExists("cmd.exe") Then
MsgBox(7, "Error!", "Du musst die Server Konsolle starten!")
EndIf$read = _CMDRead("list")
MsgBox(0, "Online", $read)
Func _CMDRead($command)
Local $line$CMD = Run(@ScriptDir & "\server.bat" & Sleep( 8000 ) & $read)
While 1
$line &= StdoutRead($CMD)
If @error Then ExitLoop
Wend
Return $line
EndFunc
Könntest du es vllt so umändern das es funktioniert.
name22
ich habe eine andere Lösung gefunden als PID, einfach Processexists
... So ganz nebenbei... ProcessExists gibt die PID des Prozesses zurück.
Ich meinte nur, dass du nicht die offene Konsole anzapfen sollst, sondern per AutoIt-Skript den Server startest, und somit von Anfang an den Zugriff auf das neue CMD-Fenster hast.
lg
Also meinst du das so?
Run(@Scriptdir & "\server.bat")
USW ?
Sollte so gehen, ja.
Alternativ halt den Inhalt der server.bat per AutoIt nachbauen.
Ich bin noch ein Anfänger, wie kann ich mehrere Befehle in eine Variable stellen so das ich StdoutRead($Variable) machen kann?
Das soll in die Variable:
Zitat
Run(@Scriptdir & "\server.bat")
Sleep(6000)
Send("list")
Send("{Enter}")
So gelöst,
ich habe jetzt ne txt rein gefügt das es dann rein schreibt wer alles on ist aber da steht dann nichts?
ZitatAlles anzeigen
#include <Constants.au3>Local $foo = Run(@Scriptdir & "\server.bat") & Sleep(6000) & Send("list") & Send("{Enter}")
$line = StdoutRead($foo)If FileExists( @DesktopDir & "\online.txt") Then FileDelete(@DesktopDir & "\bewerbung.txt" )
$LOG = FileOpen( "online.txt", 1 )
If $LOG = -1 Then;
MsgBox( 0, "Mist", "Datei konnte nicht geöffnet werden" )
Exit
EndIf
FileWrite( "online.txt", $line)
... Bitte, schau dir zuerst noch einmal die Grundlagen, bzw. die Artikel zu den einzelnen Funktionen in der Hilfe an.
Dann löst sich das hier von selbst, und du solltest deine Fehler ohne Probleme erkennen.