Feldlaus 0 Geschrieben 10. Januar 2020 Melden Teilen Geschrieben 10. Januar 2020 (bearbeitet) Hallo zusammen, bin neu in diesem Forum und bräuchte bitte etwas Hilfe mit folgendem Script, welches sich Dateien von einer Messmaschine krallt und diese dann auf einer WindowsServer 2016 Schnittstelle verarbeitet (das Script läuft direkt auf der Schnittstelle, inkl. Messdatenverarbeitung) und die Dateien danach wieder zurückschreibt zur Messmaschine in einen Sicherungsordner. Da auf der Schnittstelle ca. 10 dieser Scripte im 5-Minutenrhytmus laufen müssen, ist die Schnittstelle ohne die weitere Verarbeitungslogik schon so ganz ordentlich belastet hinsichtlich CPU und Arbeitsspeicher. :LOOP @echo off REM |======================| REM | Get files from KMG11 | REM |======================| echo . echo . Test auf kmg11.txt echo . if not exist c:\tcerf\kmg11.txt goto DIR11 goto LOG11 :LOG11 echo . echo . kmg11 fehlerlog schreiben echo . type c:\tcerf\kmg11.txt >> c:\tcerf\fehler11.log goto COPY11 :DIR11 echo . echo . kmg11.txt erstellen echo . dir /b \\KMG11_PC\SPC-FA$\*.txt > c:\tcerf\kmg11.txt goto COPY11 :COPY11 echo . echo . Messdaten von KMG11 kopieren echo . for /F %%g in (C:\tcerf\kmg11.txt) DO copy /V /Y \\KMG11_PC\SPC-FA$\%%g C:\tcerf\spc\data\%%g echo . echo . Messdaten von KMG11 verschieben echo . for /F %%g in (C:\tcerf\kmg11.txt) DO move /Y \\KMG11_PC\SPC-FA$\%%g \\KMG11_PC\SPC-FA$\Sicherung\%%g echo . echo . kmg11.txt loeschen echo . DEL c:\tcerf\kmg11.txt timeout /T 10 /nobreak goto LOOP Hardwareaufrüstung will ich erstmal vermeiden. Stattdessen suche ich nach einer Möglichkeit die bestehenden Scripte performanter zu gestalten (wenn möglich ohne PowerShell). Bin über jeden Vorschlag dankbar. Viele Grüße Benny bearbeitet 10. Januar 2020 von Feldlaus Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 10. Januar 2020 Melden Teilen Geschrieben 10. Januar 2020 (bearbeitet) Hast Du schon kontrolliert, ob an dem PC versehentlich die Turbo-Taste gedrückt wurde und der PC deshalb nur mit halben Taktrate läuft? Aber mal Spaß beiseite: Wenn in den Scripten nur Copy-Jobs enthalten sind und sonst keine "Logik" oder andere Schritte, die viel Rechenzeit kosten, wobei sollen denn die Scripte dann Zeit einsparen? Der Flaschenhals scheint mir eher nicht im Script selbst zu liegen. Je nach Anzahl und Größe der zu kopierenden Dateien, ist vermutlich das Hin- und Herkopieren der Bremsklotz. Eventuell könntest Du versuchen, ob robocopy da noch etwas rausholen kann. Übrigens: Bilder von Code sind absolut nicht hilfreich. Niemand hat Lust irgendwelchen Code abzutippen. Bitte Code in Zukunft als Text posten und als Code formatieren, danke. bearbeitet 10. Januar 2020 von BOfH_666 1 1 Zitieren Link zu diesem Kommentar
Feldlaus 0 Geschrieben 10. Januar 2020 Autor Melden Teilen Geschrieben 10. Januar 2020 vor 6 Minuten schrieb BOfH_666: Hast Du schon kontrolliert, ob an dem PC versehentlich die Turbo-Taste gedrückt wurde und der PC deshalb nur mit halben Taktrate läuft? Aber mal Spaß beiseite: Wenn in den Scripten nur Copy-Jobs enthalten sind und sonst keine "Logik" oder andere Schritte, die viel Rechenzeit kosten, wobei sollen denn die Scripte dann Zeit einsparen? Der Flaschenhals scheint mir eher nicht im Script selbst zu liegen. Je nach Anzahl und Größe der zu kopierenden Dateien, ist vermutlich das Hin- und Herkopieren der Bremsklotz. Eventuell könntest Du versuchen, ob robocopy da noch etwas rausholen kann. Übrigens: Bilder von Code sind absolut nicht hilfreich. Niemand hat Lust irgendwelchen Code abzutippen. Bitte Code in Zukunft als Text posten und als Code formatieren, danke. Sorry, hast natürlich Recht mit dem Textfile …. KMG11.txt Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 10. Januar 2020 Melden Teilen Geschrieben 10. Januar 2020 vor 3 Minuten schrieb Feldlaus: Sorry, hast natürlich Recht mit dem Textfile …. Bearbeite doch einfach Deinen originalen ersten Beitrag, entferne das Bild und ersetze es durch den Text, den Du dann als Code formatieren kannst. Ohne weitere Informationen bleibt meine Antwort aber die Gleiche. Zitieren Link zu diesem Kommentar
mwiederkehr 382 Geschrieben 10. Januar 2020 Melden Teilen Geschrieben 10. Januar 2020 Wenn ich es richtig sehe, enthält das Script eine Endlosschleife und das ohne Pause dazwischen. Das kann die CPU ganz schön auslasten. Ich würde eine Pause (notfalls mittels "ping localhost") einfügen vor dem "GOTO loop". 1 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 10. Januar 2020 Melden Teilen Geschrieben 10. Januar 2020 vor 9 Minuten schrieb mwiederkehr: Wenn ich es richtig sehe, enthält das Script eine Endlosschleife und das ohne Pause dazwischen. Wow ... gut gesehen. Jetzt weiß ich wieder, warum ich die Finger von Batch-Scripten lasse. 1 Zitieren Link zu diesem Kommentar
Feldlaus 0 Geschrieben 10. Januar 2020 Autor Melden Teilen Geschrieben 10. Januar 2020 vor 23 Minuten schrieb mwiederkehr: Wenn ich es richtig sehe, enthält das Script eine Endlosschleife und das ohne Pause dazwischen. Das kann die CPU ganz schön auslasten. Ich würde eine Pause (notfalls mittels "ping localhost") einfügen vor dem "GOTO loop". Guter Tipp ...ist mir komplett entgangen. Hab´s im Text ergänzt. Danke! vor 38 Minuten schrieb BOfH_666: Bearbeite doch einfach Deinen originalen ersten Beitrag, entferne das Bild und ersetze es durch den Text, den Du dann als Code formatieren kannst. Ohne weitere Informationen bleibt meine Antwort aber die Gleiche. Text ist eingefügt. Das Script kopiert hauptsächlich viele kleinere Textdateien. Robocopy schaue ich mir mal an, ob es da noch ne Möglichkeit gibt. Teste gerade bei mir lokal. Danke für Deine Hilfe. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 10. Januar 2020 Melden Teilen Geschrieben 10. Januar 2020 Gerade eben schrieb Feldlaus: Guter Tipp ...ist mir komplett entgangen. Hab´s im Text ergänzt. Danke! Ist der Loop im Script denn überhaupt nötig? In Deinem ersten Beitrag hattest Du geschrieben, dass die Scripte im im 5-Minuten-Rhythmus laufen - ich nehme mal an per Scheduled Job, oder? Zitieren Link zu diesem Kommentar
Feldlaus 0 Geschrieben 10. Januar 2020 Autor Melden Teilen Geschrieben 10. Januar 2020 vor 2 Minuten schrieb BOfH_666: Ist der Loop im Script denn überhaupt nötig? In Deinem ersten Beitrag hattest Du geschrieben, dass die Scripte im im 5-Minuten-Rhythmus laufen - ich nehme mal an per Scheduled Job, oder? Direkt nötig wäre der loop nicht. Es kommt halt auf die Produktivität an. Der Task läuft alle 5-10 Minuten ...alternative ist, den Job häufiger zu timen. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 10. Januar 2020 Melden Teilen Geschrieben 10. Januar 2020 vor 1 Minute schrieb Feldlaus: Direkt nötig wäre der loop nicht. Es kommt halt auf die Produktivität an. Der Task läuft alle 5-10 Minuten ...alternative ist, den Job häufiger zu timen. Mit Powershell könnte man einen Ordner "überwachen" und bei neuen Dateien entsprechende Aktionen ausführen ... falls das bei Dir passt. Wenn Du's probieren willst, such mal nach "Powershell" und "FileSystemWatcher". Zitieren Link zu diesem Kommentar
Feldlaus 0 Geschrieben 10. Januar 2020 Autor Melden Teilen Geschrieben 10. Januar 2020 vor 18 Minuten schrieb BOfH_666: Mit Powershell könnte man einen Ordner "überwachen" und bei neuen Dateien entsprechende Aktionen ausführen ... falls das bei Dir passt. Wenn Du's probieren willst, such mal nach "Powershell" und "FileSystemWatcher". Wäre auf jeden Fall ne Möglichkeit. Nur muss ich mich halt bei PowerShell erstmal reinfuxen ...und die Zeit hab ich eigentlich nicht. Aber ggf. führt da kein Weg dran vorbei. Nochmal Danke. Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 10. Januar 2020 Melden Teilen Geschrieben 10. Januar 2020 Soll "ping -n 10 localhost> nul" eine Pause bewirken? Dazu gibt es schon länger den "Timeout"-Befehl. Ganz ohne zusätzlich Last zu verursachen. 1 Zitieren Link zu diesem Kommentar
MrCocktail 194 Geschrieben 10. Januar 2020 Melden Teilen Geschrieben 10. Januar 2020 Und wieso willst du etwas per echo ausgeben, wenn das ganze im Job läuft? Du schreibst also in 18 Zeilen etwas in die Ausgabe, was kein Mensch lesen kann, weil er nicht davor sitzt.... Wenn du Dokumentieren möchtest, was das Script macht, nutze doch REM (auch wenn das tatsächlich auch Performance braucht 1 Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 13. Januar 2020 Melden Teilen Geschrieben 13. Januar 2020 Für einen File System Watcher braucht's noch nicht mal Powershell, das geht schon seit Windows 2000 über WMI Event Consumer Zitieren Link zu diesem Kommentar
Feldlaus 0 Geschrieben 15. Januar 2020 Autor Melden Teilen Geschrieben 15. Januar 2020 Am 13.01.2020 um 21:24 schrieb daabm: Für einen File System Watcher braucht's noch nicht mal Powershell, das geht schon seit Windows 2000 über WMI Event Consumer Das ist mal richtig interessant. Gegebenenfalls könnte ich mir dann den Umweg über die KMG11.TXT-Datei sparen. Diese dient eigentlich dazu sicherzustellen, daß wirklich nur die Dateien verarbeitet werden, die neu dazugekommen sind, bzw. damit bspw. keine doppelten Daten verarbeitet werden. Überwacht werden soll aber ja eigentlich nur die Freigabe \\KMG-PC\SPC-FA$ auf neue TXT-Dateien Allerdings bin ich mit dem WMI Event Consumer, bzw. Managed Object Format überfordert und check da nicht durch. Kann mir jemand behiflich sein? Wie würde die Syntax dann aussehen? Loop ist dann vermutlich auch überflüssig ... Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.