1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Batchfile, VBS mit alternierender Variable (blat.exe Log Summary per Mail verschicken

Discussion in 'Programmieren' started by samuflage, Jun 3, 2008.

Thread Status:
Not open for further replies.
  1. samuflage

    samuflage ROM

    Guten Tag die Damen und Herren

    Meine Frage geht von folgendem Batchfile aus:

    Code:
    echo on 
    blat D:\Veritas\Netbackup\scripts\Status-Summary\NBUStatusSummary.txt -attacht 
    D:\Veritas\Netbackup\scripts\Status-Summary\month\2008\2008-05.txt
    -s NBU-Report -to samuel.meili@unisys.com
    
    Mit der Anwendung "blat.exe" wird ein Mail generiert mit dem Content vom "NBUStatusSummary.txt" und dem Attachement "2008-05.txt". Dieses Mail wird dann mir geschickt mit dem Betreff "NBU-Report".

    Nun meine Frage: Dieses Batchfile wird einmal im Monat per Scheduled Task ausgeführt damit ich die Summary erhalte. Nun wäre es jedoch super, wenn das "2008-05.txt" dynamisch wäre, sprich automatisch hinauf zählt und ich so dann das "2008-06.txt" erhalte ohne manueller Eingriff. Weiss da jemand Bescheid? Vielleicht kann man auch mit dem Parameter "date" oder so etwas machen. Habe sehr wenig VBS Erfahrung, bin für jede Hilfe sehr dankbar.

    Gruss
    Racoon
     
  2. Urs2

    Urs2 Megabyte

    @Racoon

    Für Batch (*.bat) kenne ich nur die Möglichkeit mit diesem Beispiel >

    Dir > c:\%date%.txt
    schreibt den Verzeichnisinhalt in eine Datei namens "04.06.2008.txt" (= aktuelles Datum)

    Du kannst auch etwas dazuschreiben > c:\Etwas--%date%.txt ergibt "Etwas--04.06.2008.txt"

    Vielleicht kannst Du diese Form des Datums verwenden... die Befehle Year und Month kennt Batch nicht.
    Ob die Blat.exe im Parameter-Bandwurm diesen Befehl akzeptieren würde, musst Du halt testen.

    Gruss Urs
     
  3. samuflage

    samuflage ROM

    Danke für die Antwort, Urs.

    Hm... bei Batchfiles sind die Möglichkeiten halt beschränkt.
    Kann man dies vielleicht auch mit einem VB Skript lösen (.vbs)?

    Gruss
    Racoon
     
  4. Urs2

    Urs2 Megabyte

    So ist es.
    VBS ist aber auch viel empfindlicher, da müsste man ausführlich testen, was die Blat.exe denn akzeptieren würde...

    In Batch funktioniert folgender Code >

    set Datum=%date%
    set Jahr=%Datum:~6,4%
    set Monat=%Datum:~3,2%
    set Datei=%Jahr%-%Monat%.txt
    dir > c:\%Datei%

    ...schreibt den Verzeichnisinhalt in eine Datei namens "2008-06.txt"

    Versuche ob die Blat.exe das frisst >

    - Vor Deinem Code die vier set-Zeilen einfügen
    - In Deinem Code den Eintrag \2008-05.txt ersetzen durch \%Datei%
    ..... ich gehe davon aus, dass dieser Eintrag den Namen der txt-Datei bestimmt...

    Gruss Urs


    PS:
    Das funktioniert, wenn die Eingabe von date in einer Konsole das Datumsformat so anzeigt > 04.06.2008
    Wenn ein anderes Datumsformat eingestellt ist, dann die Extraktionsbefehle ~6,4 und ~3,2 anpassen...
     
    Last edited: Jun 4, 2008
  5. samuflage

    samuflage ROM

    Habe das versucht, das Batchfile sieht wie folgt aus:
    Code:
    echo on
    set Datum=%date%
    set Jahr=%Datum:~6,4%
    set Monat=%Datum:~3,2%
    set Datei=%Jahr%-%Monat%.txt
    dir > c:\%Datei%
    blat D:\Veritas\Netbackup\scripts\Status-Summary\NBUStatusSummary.txt -attacht D:\Veritas\Netbackup\scripts\Status-Summary\month\2008\%Datei%
    -s NBU-Report -to samuel.meili@unisys.com
    Wenn es ausgeführt wird, kommt folgender Fehler:
    View attachment 9018

    Also das "2008-06.txt" besteht bereits im Ordner "D:\Veritas\Netbackup\scripts\Status-Summary\month\2008". Es gaht darum jenen Namen zu generieren, damit das File mit dem aktuellen Monat als Attachement mitgeschickt wird.

    Gruss
    Racoon
     
  6. Urs2

    Urs2 Megabyte

    1. Der Link funktioniert nicht, schreib den Fehler hier rein...
    2. Die Zeile "dir > c:\%Datei%" war nur zur Demonstration gedacht, dass es so geht... sie gehört nicht in Deinen Code.
    In Deinem Ordner C:\ müsste jetzt eine Datei sein namens "2008-06.txt"...

    und 3. habe ich die Deine Funktionen wohl nicht richtig verstanden >
    - Die Datei "2008-06.txt" besteht bereits... wer hatte die denn dort hin geschrieben?
    - Wenn sie schon besteht, warum muss man sie denn noch erfinden?
    - War der Fehler, weil die Datei schon besteht?

    Bis Morgen und Gruss, Urs


    PS
    In Deinem Code verstehe ich die Zeile "-s NBU-Report -to.... " nicht.
    Müsste diese Zeile nicht an der oberen Zeile hinten angehängt sein?
     
    Last edited: Jun 4, 2008
  7. Urs2

    Urs2 Megabyte

    @Racoon --- Ich ahne was da passiert sein könnte...

    Du hattest versehentlich den Aufruf der blat.exe entzweigeschnitten. Der Aufruf Deiner *.bat bewirkte >

    - der Dateiname mit Datum wurde korrekt formatiert

    - im Wurzelordner wurde eine Datei "c:\2008-06.txt" erstellt, Inhalt = die Inhaltsliste des gerade aktuellen Ordners.
    Ist diese Datei dort? > Löschen!

    - blat.exe wurde aufgerufen und hat eine Datei "D:\Veritas\...\2008\2008-06.txt" erstellt, vermutlicher Inhalt = das was blat.exe gestern festgestellt hatte >>> Prüfen!
    Ist das so? Dann Löschen oder Umbenennen, damit beim neuerlichen Schreiben nicht gemeckert wird...
    Damit waren die Aufgaben von blat.exe abgearbeitet... der Rest war ja in der Zeile für den nächsten Befehl >

    - die letzte Befehls-Zeile war für den Befehls-Interpreter nun vollkommen unverständlich >> Fehlermeldung...


    Wenn es so war, kopiere diesen Code in eine *.bat und versuche es einmal damit >>>
    Code:
    echo on
    set Datum=%date%
    set Jahr=%Datum:~6,4%
    set Monat=%Datum:~3,2%
    set Datei=%Jahr%-%Monat%.txt
    blat.exe D:\Veritas\Netbackup\scripts\Status-Summary\NBUStatusSummary.txt -attacht D:\Veritas\Netbackup\scripts\Status-Summary\month\2008\%Datei% -s NBU-Report -to samuel.meili@unisys.com
    pause
    
    Das "pause" in der letzten Zeile lässt die Konsole geöffnet, damit Du den Ablauf nachvollziehen und Fehlermeldungen sehen könntest.
    Falls es funktioniert >>> "pause" wieder entfernen.

    Gruss Urs
     
  8. samuflage

    samuflage ROM

    Hier wird nur der Betreff "NBU-Report" des Mails angegeben.

    Veritas hat dieses Logfile erstellt. Nun geht es darum mit "blat.exe" dieses File jeweils ende Monat automatisch mir zu mailen.

    Nicht die Datei muss erfunden werden, nur der Name des txt's, weil ja jeder Monat ein neues generiert wird, damit das aktuelle jeweils mitgeschickt wird im automatisch generierten Mail.

    Es hat geklappt!!! Du bist der Beste, danke tausend!
    Code:
    C:\Documents and Settings\exthaefelic>D:\Veritas\Netbackup\scripts\Status-Summar
    y\MonthlyReport_v3.bat
    
    C:\Documents and Settings\exthaefelic>echo on
    
    C:\Documents and Settings\exthaefelic>set Datum=05.06.2008
    
    C:\Documents and Settings\exthaefelic>set Jahr=2008
    
    C:\Documents and Settings\exthaefelic>set Monat=06
    
    C:\Documents and Settings\exthaefelic>set Datei=2008-06.txt
    
    C:\Documents and Settings\exthaefelic>blat.exe D:\Veritas\Netbackup\scripts\Stat
    us-Summary\NBUStatusSummary.txt -attacht D:\Veritas\Netbackup\scripts\Status-Sum
    mary\month\2008\2008-06.txt -s NBU-Report -to samuel.meili@unisys.com
    Blat v2.4 w/GSS encryption (build : Jan 15 2005 08:32:11)
    
    Sending D:\Veritas\Netbackup\scripts\Status-Summary\NBUStatusSummary.txt to samu
    el.meili@unisys.com
    Subject: NBU-Report
    Login name is Netbackup@landisgyr.com
    Attached text file: D:\Veritas\Netbackup\scripts\Status-Summary\month\2008\2008-
    06.txt
    
    C:\Documents and Settings\exthaefelic>pause
    Press any key to continue . . .
    Gruss
    Racoon
     
  9. samuflage

    samuflage ROM

    hm... etwas spät ist mir eingefallen, dass ja jeweils das logfile vom letzten Monat als Attachement angefügt werden sollte. Das heisst, im 1. Juli wird das Batchfile ausgeführt, dabei sollte dann das Logfile "2008-06.txt" angehängt werden. Habe versucht bei der Variable "Monat" einfach mit '-1' den vorherigen Monat zu erhalten, hat leider nicht geklappt.

    Gruss
    Racoon
     
  10. Urs2

    Urs2 Megabyte

    Schade...
    Die Batch anstatt am 1.Juli morgens, schon am 30.Juni abends ausführen lassen geht nicht?

    Im Moment fällt mir nicht ein, wie ich den "falschen" Monat herzaubern könnte...
    ...werde mich noch damit befassen...

    Gruss Urs
     
  11. samuflage

    samuflage ROM

    ich hätte da eine Idee, habe es folgendermassen versucht:

    Code:
    D:\Veritas\Netbackup\scripts\Status-Summary>echo on
    
    D:\Veritas\Netbackup\scripts\Status-Summary>set Datum=05.06.2008
    
    D:\Veritas\Netbackup\scripts\Status-Summary>set Jahr=2008
    
    D:\Veritas\Netbackup\scripts\Status-Summary>set /a Monat=06-1
    
    D:\Veritas\Netbackup\scripts\Status-Summary>REM set /a Monat=Monat2-1
    
    D:\Veritas\Netbackup\scripts\Status-Summary>set Datei=2008-5.txt
    
    D:\Veritas\Netbackup\scripts\Status-Summary>blat.exe D:\Veritas\Netbackup\script
    s\Status-Summary\NBUStatusSummary.txt -attacht D:\Veritas\Netbackup\scripts\Stat
    us-Summary\month\2008\2008-5.txt -s NBU-Report -to samuel.meili@unisys.com
    Blat v2.4 w/GSS encryption (build : Jan 15 2005 08:32:11)
    
    Sending D:\Veritas\Netbackup\scripts\Status-Summary\NBUStatusSummary.txt to samu
    el.meili@unisys.com
    Subject: NBU-Report
    Login name is Netbackup@landisgyr.com
    
    D:\Veritas\Netbackup\scripts\Status-Summary>pause
    Press any key to continue . . .
    
    Nun fehlt jedoch eine Stelle, es wird "2008-5.txt" anstatt "2008-05.txt" generiert.
    Kann man bei einer Zahl eine zwei Stellenanzeige forcieren?

    Gruss
    Racoon
     
  12. Urs2

    Urs2 Megabyte

    In anderen Sprachen sicher, bei Batch ist zumindest mir nichts bekannt.

    Ich habe dieses monströse Gebilde gebastelt, aber zeige es nicht herum, nicht dass sich noch einer totlacht... aber nur einmal im Monat wird das der Rechner schon verkraften...

    Code:
    echo on
    set Datum=%date%
    set Jahr=%Datum:~6,4%
    set Monat=%Datum:~3,2%
    If %Monat%==01 goto januar
    If %Monat%==02 set Monat=01
    If %Monat%==03 set Monat=02
    If %Monat%==04 set Monat=03
    If %Monat%==05 set Monat=04
    If %Monat%==06 set Monat=05
    If %Monat%==07 set Monat=06
    If %Monat%==08 set Monat=07
    If %Monat%==09 set Monat=08
    If %Monat%==10 set Monat=09
    If %Monat%==11 set Monat=10
    If %Monat%==12 set Monat=11
    goto weiter
    :
    :januar
    set Monat=12
    set Jahr=2008
    :
    :weiter
    set Datei=%Jahr%-%Monat%.txt
    blat.exe D:\Veritas\Netbackup\scripts\Status-Summary\NBUStatusSummary.txt -attacht D:\Veritas\Netbackup\scripts\Status-Summary\month\2008\%Datei% -s NBU-Report -to samuel.meili@unisys.com
    pause
    rem wenn es funktioniert, pause entfernen
    
    Bei mir tut es was es soll > Testen
    Mein Teil wird funktionieren bis Dezember 2009, es sei denn...
    ...ab Mitte Januar 2009 würde meine Jahreszahl (und Dein Pfad) ersetzt durch 2009...

    Gruss Urs
     
Thread Status:
Not open for further replies.

Share This Page