Anzeige

Am Puls von Microsoft

Anzeige

System Batch Automation mit Regina-Rexx

Dau47

kennt sich schon aus
Hallo Forum.

Ich nutze eine externe Software, die allerdings nicht genau das macht, was ich mir vorstelle.

Um zu den von mir gesetzten Ziel zu kommen, müssen Einträge in der Registry gelöscht und neue Einträge gesetzt werden. Doch dafür habe ich bei Regina-Rexx keine Schnittstelle gefunden.

Mein Rexx-Code wird über eine CMD-Prozedur täglich zu einer bestimmten Uhrzeit gestartet.

In der CMD-Prozedur könnte ich den Namen einer temporären File vorgeben. den ich über einen festgelegten Namen in der Rexx-Prozedur
über die System-Variablen ermittel kann.

set GenFile="%Temp%\GenFile%DateHdr% %TimeHdr%.tmp"

Ich könnte im Rexx-Code diese File (GenFile = Value("GenFile", ,"ENVIRONMENT")) füllen, und danach müsste dieses File ausgeführt werden. Zuerst wird ein Eintrag in der Registry gelöscht, danach werden mehrere Einträge hinzugefügt, wodurch der zuvor gelöschte Zweig wieder eingerichtet wird. Die Aktionen in der Registry beziehen sich also auf einen kleinen begrenzten Bereich und sind überschaubar.

Die generierten Befehle so etwa so aus:
reg delete "HKEY_CURRENT_USER\SOFTWARE\xxx\xxx\Test\Filters\Include" /f
reg add "HKEY_CURRENT_USER\SOFTWARE\xxx\xxx\Test\Filters\Include" /v AVersionb4 /t REG_SZ /d =
reg add "HKEY_CURRENT_USER\SOFTWARE\xxx\xxx\Test\Filters\Include" /v BVersiond8 /t REG_SZ /d =


Mit den Änderungen an der Registry kann ich die externe Software so steuern, dass das von mir gewünschte Ergebnis eintritt. Die Alternative wäre täglich eine manuelle Anpassung über das Menü dieser externen Software).

Meine Frage:

Wie kann ich in der CMD-File die Registry-Befehle zur Ausführung bringen? Wie müsste die maschinell erzeugte File aussehen?

Nur zum Verständnis: das alles läuft ausschließlich auf meinem persönlichen PC.

Wer kann helfen?
 
Anzeige
So ganz verstehe ich nicht, was Du da vorhast. Die Registry-Änderungen führst Du über eine CMD aus. Diese Änderungen sind nötig, damit das Programm "Rexx" ordungsgemäß funktioniert. Soweit richtig?
 
Nicht ganz. Über Rexx muss ich einige Dinge ermitteln. Aus den gewonnen Informationen entstehen die nötigen Registry-Befehle. Wenn die aktiviert wurden, dann macht die externe Software das, was ich mich vorstelle. Es wird zwar täglich geprüft, doch Änderungen an der Registry ergeben sich maximal ein mal in der Woche. Könnte ich die Registry auslesen, dann könnte ich zusätzlich ermitteln, ob eine Änderung erforderlich ist.
 
Also so:
1.) Eine CMD bringt "Rexx" zur Ausgabe von (wechselnden) Informationen
2.) Diese Info sollen als REG importiert werden
3.) Eine externe Software greift auf die Registray-Einträge zu
 
Hallo Pete

Es gibt kein Problem in Rexx, wenn man davon absieht, das es Rexx keine Zugriff (Lesen/Schreiben) zur Registry vorsieht. Wenn ich also Ändrungen an der Registry brauche, kann ich den dazu erforderlichen Befehl zwar in Rexx generieren. Mein Problem ist, wie ich die generierten Befehle dann zur Ausführungen bringen kann.

Also so:
1.) Eine CMD bringt "Rexx" zur Ausgabe von (wechselnden) Informationen
2.) Diese Info sollen als REG importiert werden
3.) Eine externe Software greift auf die Registray-Einträge zu
Genauso
ist es.
 
Grundsätzlich würde eine solche CMD etwa so aussehen:
Code:
@echo off
rem Löscht den vorhandenen Schlüssel
reg delete "HKEY_CURRENT_USER\SOFTWARE\xxx\xxx\Test\Filters\Include" /f

rem Fügt den Schlüssel mit dem Wert AVersionb4 hinzu
reg add "HKEY_CURRENT_USER\SOFTWARE\xxx\xxx\Test\Filters\Include" /v AVersionb4 /t REG_SZ /d =

rem Fügt den Schlüssel mit dem Wert BVersiond8 hinzu
reg add "HKEY_CURRENT_USER\SOFTWARE\xxx\xxx\Test\Filters\Include" /v BVersiond8 /t REG_SZ /d =

echo Befehle wurden ausgeführt.
pause
 
Der Syntax ist mir schon klar. Das Problem für mich besteht darin, die File, in welcher die gezeigten Befehle generiert wurden, zur Ausführung zu bringen. Und zwar automatisch, ggf. abhängig vom Return-Code, der aus dem Rexx-Code zur Verfügung gestellt wird. Und das kann nach meinem Verständnis nur in der CMD-Prozedur geschehen, durch welche Rexx aufgerufen wurde. Mir ist keine Möglichkeit bekannt, von Rexx aus eine CMD-Prozedur zu starten.
 
Zuletzt bearbeitet von einem Moderator:
Wenn es nur um die Ausführung der CMD geht, könntest Du das evtl. über die Aufgabenplanung machen.
Du gibst den Pfad zur Datei an und einen bestimmten "Trigger" - dieser kann zeitbasiert sein (z.B. 1x täglich) oder auch z.B. durch das Starten von "Rexx" ausgelöst werden.
 
Es geht nicht um die CMD, welcher die Rexx startet. Das geschieht - wie vorgeschlagen - automatisch über die Aufgabenplanung. Die Rexx erstellt ggf. eine weitere CMD-Prozedur mit den Registry-Befehlen. Und wie kann ich die zur Ausführung bringen. Das kann nicht über die Aufgabenplanung geschehen, weil der Inhalt zuerst neu generiert werden muss.
 
Wenn die CMD, die von "Rexx" erstellt wird, immer am gleichen Ort liegt, dann kann sie doch über die Aufgabenplanung ausgeführt werden? Der (wechselnde) Inhalt der CMD ist der Aufgabenplanung egal.
 
Wie stelle ich sicher, dass Schritt 1 (Generierung) vor Schritt 2 (Ausführung des generierten Codes) ausgeführt wurde? Und es könnte Bedingungen geben, nach denen der (alte) generierte Code nicht mehr ausgeführt werden sollte.

Ich werde das Thema in diesem Forum nicht mehr weiterverfolgen und versuche mein Glück in der Rexx-Ecke.

Danke an alle, die sich an diesem Thead beteiligt haben.
 
Zuletzt bearbeitet von einem Moderator:
Anzeige
Oben