Jump to content

Performante Schnittstellenverarbeitung


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 von Feldlaus
Link zu diesem Kommentar

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?  ;-) :lol3::aetsch2:  

 

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 von BOfH_666
  • Danke 1
  • Haha 1
Link zu diesem Kommentar
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?  ;-) :lol3::aetsch2:  

 

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

Link zu diesem Kommentar
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.

Link zu diesem Kommentar
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.

Link zu diesem Kommentar
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".

Link zu diesem Kommentar
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.

Link zu diesem Kommentar
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 ...

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...