REXX - Programm-Ausgabe in Variable umleiten

(DE) Anwendungen für Office, Multimedia und Spiele, Werkzeuge, Hilfsprogramme, etc
(EN) Applications for Office, Multimedia or Games, Tools, Utilities, e.g.
Antworten
Benutzeravatar
Rexfahrer
Beiträge: 51
Registriert: Mo 12. Sep 2016, 20:53

REXX - Programm-Ausgabe in Variable umleiten

Beitrag von Rexfahrer »

Hallo, ich schreibe gerade an einem REXX-Programm (reines REXX, kein VISPRO/REXX o. Ä.), bei dem mit Hilfe von file.exe der Typ einer Datei bestimmt werden soll. Dazu muss natürlich die Ausgabe von file.exe irgendwie in einer Variable gespeichert werden damit sie nachher weiterverarbeitet werden kann. Bisher habe ich das immer mit

Code: Alles auswählen

'@file.exe >> log.txt'
gemacht und log.txt dann mit linein() eingelesen.
Nun denke ich mir, dass das doch auch einfacher gehen müsste. Nur wie? Kann mir da vielleicht ein REXX-Profi hier im Forum weiterhelfen?

Gruß, Laurenz
Zuletzt geändert von Rexfahrer am Mi 19. Okt 2016, 22:29, insgesamt 1-mal geändert.
Benutzeravatar
ak120
Beiträge: 1044
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

Um welche der zig Varianten von FILE.EXE handelt es sich? Wenn man den Dateityp in Rexx bestimmen möchte, ist dies mit wenig Aufwand möglich. Die meisten mir bekannten file-Programme bestimmen schon recht zverlässig den Dateityp. Wozu also noch ein weiteres Programm? Soll die Rexx-Prozedur nur unter OS/2 oder DOS funktionieren?
erdmann
Beiträge: 594
Registriert: Mo 4. Jan 2016, 14:36

Beitrag von erdmann »

"file.exe | rxqueue"

Danach kann man dann mit "queued" und "linein" den output lesen. Einfach mal die Hilfe zu "rxqueue" durchlesen.
Benutzeravatar
thorolf
Beiträge: 563
Registriert: Mi 25. Dez 2013, 16:14
Wohnort: Rhein-Main

Beitrag von thorolf »

Rexfahrer hat geschrieben:Hallo, ich schreibe gerade an einem REXX-Programm (reines REXX, kein VISPRO/REXX o. Ä.), bei dem mit Hilfe von file.exe der Typ einer Datei bestimmt werden soll.
Bei SysGetEA gibt es u.a .TYPE als Attribut, damit sollte das eigentlich gehen ...
Grüße,

Thorolf
Benutzeravatar
Rexfahrer
Beiträge: 51
Registriert: Mo 12. Sep 2016, 20:53

Beitrag von Rexfahrer »

Danke für eure Antworten, den entscheidenden Hinweis hat erdmann gegeben, um das auszuprobieren habe ich gleich eine kleine Test-Prozedur geschrieben, vielleicht hilft sie noch jemand anderem weiter, ich finde die in OS/2 enthaltene REXX-Dokumentation stellenweise etwas unvollständig:

Code: Alles auswählen

/* Dieses kleine Test-Script benötigt file.exe irgendwo im PATH */

'@RXQUEUE /CLEAR' /* Warteschlange zurücksetzen */

/* Dateityp aller Dateien im Verzeichnis bestimmen und in der Warteschlange speichern */
'@file.exe * | RXQUEUE'

zaehler = 0

/* Inhalt der Warteschlange in Paketen von 20 Zeilen anzeigen bis diese leer ist */
do while queued() \= 0
	if zaehler = 20 then do
		zaehler = 0
		'@pause'
	end
	zaehler = zaehler + 1
	say linein('QUEUE:')
end
'@RXQUEUE /CLEAR' /* Warteschlange zurücksetzen */
thorolf hat geschrieben:Bei SysGetEA gibt es u.a .TYPE als Attribut, damit sollte das eigentlich gehen ...
Das ist mir bekannt, funktioniert aber nur bei Dateitypen, die OS/2 kennt.
ak120 hat geschrieben: Die meisten mir bekannten file-Programme bestimmen schon recht zverlässig den Dateityp. Wozu also noch ein weiteres Programm?
Mein Programm soll nicht nur dazu dienen den Dateityp zu bestimmen, schließlich tut das file.exe schon, sondern helfen, eine Datei, bei der z. B. die Dateiendung fehlt, mit dem richtigen Programm zu öffnen.

Gruß, Laurenz
Benutzeravatar
ak120
Beiträge: 1044
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

Rexfahrer hat geschrieben:Danke für eure Antworten, den entscheidenden Hinweis hat erdmann gegeben, um das auszuprobieren habe ich gleich eine kleine Test-Prozedur geschrieben, vielleicht hilft sie noch jemand anderem weiter, ich finde die in OS/2 enthaltene REXX-Dokumentation stellenweise etwas unvollständig:
Es is ja zum Glück darüber hinaus, genug zu finden.
/* Dieses kleine Test-Script benötigt file.exe irgendwo im PATH */
Dann teste es doch am besten einfach vor dem Aufruf.

Ob man nun Warteschlangen oder andere Mittel zwischen den Prozessen nutzt, ist letztlich Geschmackssache.
thorolf hat geschrieben:Bei SysGetEA gibt es u.a .TYPE als Attribut, damit sollte das eigentlich gehen ...
Das ist mir bekannt, funktioniert aber nur bei Dateitypen, die OS/2 kennt.
Deshalb ja die Frage zur verwendeten FILE.EXE und somit der darin enthaltenen Unterstützung für Metadaten.
ak120 hat geschrieben: Die meisten mir bekannten file-Programme bestimmen schon recht zverlässig den Dateityp. Wozu also noch ein weiteres Programm?
Mein Programm soll nicht nur dazu dienen den Dateityp zu bestimmen, schließlich tut das file.exe schon, sondern helfen, eine Datei, bei der z. B. die Dateiendung fehlt, mit dem richtigen Programm zu öffnen.
Das funktioniert doch mit den "richtigen" Programmen bereits seit Urzeiten. Es mag sein, daß 1991 noch einige 16-bit Programme ihre Probleme hatten. Ich kann den Nutzen oder Vorteil nicht erkennen. Bei Textdateien bspw. arbeitet ein guter Editor m.E. zuverlässiger als die Schätzung von file.
Benutzeravatar
Rexfahrer
Beiträge: 51
Registriert: Mo 12. Sep 2016, 20:53

Beitrag von Rexfahrer »

ak120 hat geschrieben:Dann teste es doch am besten einfach vor dem Aufruf.
Ne, da dieses Skript nur dazu dient die Verwendung von RXQUEUE auszuprobieren. Sein praktischer Nutzen ist ohnehin gering, man könnte schließlich auch einfach

Code: Alles auswählen

file * | more
eingeben und das würde sogar bessere Ergebnisse liefern.
ak120 hat geschrieben:Deshalb ja die Frage zur verwendeten FILE.EXE und somit der darin enthaltenen Unterstützung für Metadaten.
Wenn du es unbedingt wissen willst: Die über YUM installierbare Version 5.04-7.
ak120 hat geschrieben:Das funktioniert doch mit den "richtigen" Programmen bereits seit Urzeiten. Es mag sein, daß 1991 noch einige 16-bit Programme ihre Probleme hatten. Ich kann den Nutzen oder Vorteil nicht erkennen. Bei Textdateien bspw. arbeitet ein guter Editor m.E. zuverlässiger als die Schätzung von file.
Ich möchte mir erlauben, die Motivation für mein Programm zu erklären:
Hin und wieder kommt es vor, dass eine Datei mit dem Systemeditor geöffnet wird, da OS/2 den Dateityp nicht kennt, obwohl es keine Textdatei ist. Dies kommt beispielsweise vor, wenn bei einer Datei die Endung fehlt oder falsch ist, z. B. bei den vielen FILE0000.CHK usw., die man nach einem CHKDSK auf einem nicht richtig ausgeworfenen USB-Stick erhält. Mit meinem Programm kann man solche Dateien dann ganz normal öffnen und sie werden sofort mit dem richtigen Programm geöffnet und optional mit der richtigen Endung versehen.

Gruß, Laurenz
Antworten