%GMP_RunCmd

  • Ich versuche mit dem "%GMP_RunCmd" Makro verzweifelt die Ausgaben eines Batch-Programmes in eine Datei zu schreiben.

    Dafuer wird im Filter-Assi > Aktionen > Nachricht erstellen fuer: [ ] in der Vorlage folgendes Makro eingesetzt:

    Code
    %GMP_RunCMD('C:\G\G.bat')


    Diese G.BAT gibt auf der Kommandozeile folgende Werte aus:

    Code
    123456
    1111234
    1112223
    4456567
    1111000

    In der erstellten Datei steht "ERR" als Rueckgabewert. Ideen, Vorschlaege ...?

    Man möchte manchmal Kannibale sein, nicht um den oder jenen aufzufressen, sondern um ihn auszukotzen. Johann Nestroy.

  • Nachdem ich mir einen Filter (Filter-Assi > Aktionen > Nachricht erstellen fuer:) erstellt und in die Vorlage

    Code
    %GMP_RunCMD('E:\G\G.bat')


    eingefügt habe, konnte ich das Problem leider nicht nachvollziehen. Die durch die Filterung erstellten Mails im Postausgang hatten die richtige Ausgabe.

    Was steht denn in deiner BAT-Datei?
    Kann es sein, dass die BAT-Datei länger als 5 Sekunden (= Standard-Wert für das Timeout) zur Abarbeitung benötigt?

  • Es werden per «grep» Zeilen aus einer Datei ausgelesen und die Ergebnisse einzeln dargestellt. In der Kommandozeile geht das Ratzfatz.

    Man möchte manchmal Kannibale sein, nicht um den oder jenen aufzufressen, sondern um ihn auszukotzen. Johann Nestroy.

  • Zitat

    Versuche mal die Ausgabe der BAT-Datei (in der Konsole) in eine Datei umzuleiten. Alse etwa so:

    Code
    G.bat > out.txt


    Sollte das gehen, müsste es auch mit GMP_RunCmd funktionieren.


    Die Umleitung in eine Datei funktioniert. (Ich sende Dir heute Abend die Beispieldateien.)

    Man möchte manchmal Kannibale sein, nicht um den oder jenen aufzufressen, sondern um ihn auszukotzen. Johann Nestroy.

  • Wenn's schon mal ein Thread zu %GMP_RunCmd gibt ...

    Mir ist aufgefallen, dass ich bei der Angabe von Windows-Systemvariablen umgebende Prozentzeichen doppeln muss, andernfalls wird der Variablenname-String ignoriert.

    Folgendes funktioniert also nicht:

    Code
    %GMP_RunCmd("echo %windir%")


    Dieser Aufruf ergibt

    Code
    ECHO ist eingeschaltet (ON).

    So hingegen klappt es:

    Code
    %GMP_RunCmd("echo %%windir%%")


    Gruß,

    Mikka

  • Zitat

    Mir ist aufgefallen, dass ich bei der Angabe von Windows-Systemvariablen umgebende Prozentzeichen doppeln muss, andernfalls wird der Variablenname-String ignoriert.


    Das kommt daher, weil The Bat! ein Prozentzeichen als Einleitung für ein Makro interpretiert. Zum Beispiel:

    Code
    %GMP_Trim("%TEXT")


    Beim Aufruf von

    Code
    %GMP_RunCmd("echo %windir%")

    wird "%windir" als Makro gewertet und da es das Makro "%windir" nicht gibt, wird eine leere Zeichenkette zurückgegeben und von "echo" ausgegeben (was zur Anzeige von "ECHO ist eingeschaltet (ON)." führt.

  • Okay, dachte mir schon fast, dass es sich hierbei nicht um einen Bug im eigentlichen Sinn handelt, habe Recht behalten. :)
    Wäre allerdings 'ne Erwähnung in der Hilfe (zu %GMP_RunCmd) wert.

  • Zitat

    Nachdem ich mir einen Filter (Filter-Assi > Aktionen > Nachricht erstellen fuer:) erstellt und in die Vorlage

    Code
    %GMP_RunCMD('E:\G\G.bat')


    eingefügt habe, konnte ich das Problem leider nicht nachvollziehen. Die durch die Filterung erstellten Mails im Postausgang hatten die richtige Ausgabe.


    Liegt vermutlich am «grep».

    Man möchte manchmal Kannibale sein, nicht um den oder jenen aufzufressen, sondern um ihn auszukotzen. Johann Nestroy.

  • Ich habe die Win32-Portierung verwendet. http://gnuwin32.sourceforge.net/

    Zitat

    Ich vermute mal, dass GREP zu Cygwin gehört, oder?


    Mich hasst irgendwie die *nix Welt - komme ueberhaupt nicht damit klar.

    Man möchte manchmal Kannibale sein, nicht um den oder jenen aufzufressen, sondern um ihn auszukotzen. Johann Nestroy.

    Einmal editiert, zuletzt von Thomas Woelk (16. Mai 2004 um 00:03)

  • Zitat

    Mich hasst irgendwie die *nix Welt - komme ueberhaupt nicht damit klar.


    Wie genau sieht deine grep-Anweisung denn aus?

  • Wurde eben von caschy auf einen Bug in %GMP_RunCmd() - Version 0.62 - aufmerksam gemacht:
    Wenn ich etwa Ausgaben des Programms fortune via %GMP_RunCmd('fortune foo',1) zurückliefern lasse, werden Tabulatoren nicht korrekt umgesetzt.
    Das Problem tritt beim Ausgeben (etwa "type foo") von mit Tabs formatierten Textdateien (in edit.com erzeugt) nicht auf.
    Als Interimslösung nutze ich einen RegEx-Wrapper, der etwaig vorhandene [\t] durch mehrfache Leerschritte ersetzt.

    [gelöscht durch Administrator]

    Einmal editiert, zuletzt von Mikka (16. Mai 2004 um 15:25)

  • Zitat

    Wurde eben von caschy auf einen Bug in %GMP_RunCmd() - Version 0.62 - aufmerksam gemacht:
    Wenn ich etwa Ausgaben des Programms fortune via %GMP_RunCmd('fortune foo',1) zurückliefern lasse, werden Tabulatoren nicht korrekt umgesetzt.
    Das Problem tritt beim Ausgeben (etwa "type foo") von mit Tabs formatierten Textdateien (in edit.com erzeugt) nicht auf.


    Wieso sollte es ein Bug sein, wenn die Daten mit TYPE richtig ausgegeben werden? Welches Zeichen (ANSI-/ASCII-Code) verwendet Fortune zur Ausgabe eines Tabulartors. Scheinbar nicht den Zeichencode 9, sonst würde es funktionieren.

  • Zitat

    Liegt vermutlich am «grep».


    Glaube ich nicht, denn bei mir scheint es zu funktionieren:

    Inhalt der Datei "test.txt":

    Code
    1234567890
    abc
    56789
    xyz
    12345
    Test
    0987654321
    TEST

    Inhalt der Datei "test.bat":

    Code
    @grep [0-9] e:\test.txt

    Ergbit mit %GMP_RunCmd("e:\test.bat")

    Code
    1234567890
    56789
    12345
    0987654321


    Edit:
    Vergewissere dich, dass in deiner BAT-Datei absolute Pfadangaben eingetragen sind.

  • @ Mikka
    Ich habe mir deine Datei "schopenhauer" angesehen. Scheint alles korrekt zu sein. In TB liefert das Makro

    Code
    %GMP_RunCmd("fortune schopenhauer",1)

    schön brav

    Code
    Das Affektieren irgendeiner Eigenschaft, das Sichbrüsten damit ist
    ein Selbstgeständnis, daß man sie nicht hat.
                    -- Arthur Schopenhauer (Parerga und Paralipomena)

    mit den Tabulatoren (diese werden von TB allerdings in mehrere Leerzeichen umgewandelt).
    Das Makro

    Code
    %GMP_RunCmd("fortune schopenhauer")

    funktioniert auch, nur werden eben die Umlaute nicht richtigangezeigt. Aber mit Tabulatoren habe ich keine Probleme gefunden.

  • Bei mir gibt der Makroaufruf unverändert Kästchen anstelle von Tabulatoren aus, ob mit Version 0.62 oder mit Version 0.63. Und caschy, der mich darauf hinwies, hat dasselbe Problem. Interessant, dass es bei dir funktioniert. Mit welcher Version von TB! hast du das getestet?

  • Zitat

    Bei mir gibt der Makroaufruf unverändert Kästchen anstelle von Tabulatoren aus, ob mit Version 0.62 oder mit Version 0.63. Und caschy, der mich darauf hinwies, hat dasselbe Problem. Interessant, dass es bei dir funktioniert. Mit welcher Version von TB! hast du das getestet?


    Mit der Version 0.63.

    Exportiere bitte eine der fehlerhaften Ausgaben in eine Textdatei und schicke sie mir (als Attachment), also z.B.:
    fortune xyz > ausgabe.txt

    Mal sehen, welche Zeichen dann als Tabulator verwendet werden.

  • Wenn ich eine solche Mail exportiere, stehen da ganz normal Tabulatoren drin, nur während des Erstellens erscheinen statt der Tab-Abstände besagte Kästchensymbole.
    Leider kann ich den Fehler nicht genauer eingrenzen, auch wenn es mich wundert, dass bei dir dieses Phänomen nicht auftritt. Ob's am verwendeten Zeichensatz liegt? Oder an irgendeiner MicroEd-Einstellung?