Danke, hat funktioniert.
eine Frage noch, eine datei oder Ordner finden kein Problem, wie aber prüfe ich ob ein Ordner inhalt hat oder nicht.
Danke, hat funktioniert.
eine Frage noch, eine datei oder Ordner finden kein Problem, wie aber prüfe ich ob ein Ordner inhalt hat oder nicht.
Hallo,
Func CheckOn()
$s_Path = StringReplace($serverdir & $filedir & $g_c_sServerEXE, "\", "\\")
$colItems = ObjGet("winmgmts:").ExecQuery('SELECT * FROM Win32_Process WHERE ExecutablePath="' & $s_Path & '"', "WQL")
If $colItems.count Then
MsgBox(4096, "Prozess vorhanden", "Bestanden.")
Else
MsgBox(4096, "Prozess nicht vorhanden", "n Bestanden.")
EndIf
EndFunc
Func CheckSteam()
$s_Path = StringReplace($serverdir & $filedir & $g_c_sServerEXE, "\", "\\")
$colItems = ObjGet("winmgmts:").ExecQuery('SELECT * FROM Win32_Process WHERE ExecutablePath="' & $s_Path & '"', "WQL")
If $colItems.count Then
MsgBox(4096, "Prozess vorhanden", "Bestanden 1.")
Else
MsgBox(4096, "Prozess nicht vorhanden", "n Bestanden 1.")
EndIf
EndFunc
Alles anzeigen
Ich möchte beide Funktionen in unterschiedlichen Zeitabständen in einem Script ausgeführt haben. Kann mir da jemand weiterhelfen ?
Ich sage auf jeden Fall einmal vielen dank.
Wie mir mal jemand gesagt hat, man soll immer einfach denken
Läuft Astrein nun
Als ich dieses Script entdeckt habe, war das der Anfang mich mit Autoit zu beschäftigen. Da liegt noch ein langer Weg vor mir.
ungültige Endung
ich hab jetzt das komplette Script noch einmal neu angepasst, da es nicht von mir ist, ich die Source nur erweitere und für ähnliche Spiele nutze, das script erzeugt wieder die gleichen Fehler.
Bekomm aber nun die Meldung hier im Forum:
Deine Nachricht ist zu lang.
moment ich stelllst grad nochmal neu zusammen mit einer copy von einem anderen Spiel
v 3.3.14.2
da gibts noch mehr drum, Der erste Aufruf des Arrays funktioniert wunderbar. Wenn die Pid erlischt, Sprich die Anwendung aus ist Abstürzt oder wie auch immer, wird der Startprozess wieder von vorn gestartet.
Dabei wird das Array nun wieder ein 2. mal aufgerufen mit
Local $filelist = _FileListToArray($serverdir & "\ShooterGame\Content\Mods","*.mod")
Beim 2. aufruf kommt dann der Fehler, nehme Aufruf raus funktioniert es nur ohne Array, der einzge Unterschied in dem Momen ist das ein Array schon vorhanden ist.
genaue Fehlermeldung
Line64 (File C:\Program Files (x64)) Autoit3\Include\Array.au3")
Global Enum $ARRAYFILL_FORCE_DEFAULT, $ARRAYFILL_FORCE_SINGLEITEM, $ARRAYFILL_FORCE_INT, $ARRAYFILL_FORCE_NUMBER, $ARRAYFILL_FORCE_PTR, $ARRAYFILL_FORCE_HWND, $ARRAYFILL_FORCE_STRING
Error: Cannot assign values to constants
der meldet als Fehler die Zeile 64 in der include Datei Array.ua3 die Zeile habe ich gepostet
Global Enum $ARRAYFILL_FORCE_DEFAULT, $ARRAYFILL_FORCE_SINGLEITEM, $ARRAYFILL_FORCE_INT, $ARRAYFILL_FORCE_NUMBER, $ARRAYFILL_FORCE_PTR, $ARRAYFILL_FORCE_HWND, $ARRAYFILL_FORCE_STRING
Ich bekommen allerdings jedesmal beim 2. aufruf die Fehlermeldung
Line64 Array.ua3
Global Enum $ARRAYFILL_FORCE_DEFAULT, $ARRAYFILL_FORCE_SINGLEITEM, $ARRAYFILL_FORCE_INT, $ARRAYFILL_FORCE_NUMBER, $ARRAYFILL_FORCE_PTR, $ARRAYFILL_FORCE_HWND, $ARRAYFILL_FORCE_STRING
Hallo
ich versuche aktuell nach der Erstellung eines Array die damit ausgeführten Aktionen das komplette Array zu löschen, damit es bei einem 2. Aufruf keine Probleme mehr gibt, leider komme ich hier nicht weiter nach 2 Tagen google und verschiedenen Versuchen.
Local $filelist = _FileListToArray(@scriptdir & "\ShooterGame\Content\Mods","*.mod")
For $x = 1 to $filelist[0]
$modfile = StringRegExpReplace($filelist[$x], ".mod", "")
If $modfile <> "111111111" Then
RunWait("" & $steamcmddir & "\steamcmd.exe +@ShutdownOnFailedCommand 1 +@NoPromptForPassword 1 +login anonymous +force_install_dir " & $serverdir & "\updater +workshop_download_item 346110 " & $modfile & " +quit")
FileWriteLine($g_c_sLogFile, _NowCalc() & " [" & $ServerName & " (PID: " & $g_ArkPID & ")] Moddownload Steamcmd " & $modfile)
RunWait("" & $steamcmddir & "\copy\Copy.exe " & $steamcmddir & " " & $serverdir & " " & $modfile )
FileWriteLine($g_c_sLogFile, _NowCalc() & " [" & $ServerName & " (PID: " & $g_s$g_ArkPID & ")] Mod entpackt " & $modfile)
EndIf
Next
Alles anzeigen
Kann mir da jemand helfen. Danke
funktioniert, supi vielen Dank
Einfach weil im gesamten 3 Prozesse mit der Exe an verschiedenen Orten auf der HDD laufen.
Hallo,
Seit einiger Zeit beschäftige ich mit mit Autoit. Aktuell suche ich die Möglichkeit die Pid anhand des Pfades zu ermitteln. Unter batch mache ich das mit folgenden Weg
for /f "usebackq tokens=2 delims==" %%a in (`wmic process where ^(ExecutablePath^="%vara%Citadel\\Binaries\\Win64\\CitadelServer-Win64-Shipping.exe"^) get processid /value`) do (
kann mir da jemand helfen