Batch-Programmierung die 2.



  • svnlook log -t %TXN% %REPOS% 1>MESSAGE
    erzeugt ne datei namens MESSAGE.

    echo. > LEER
    erzeugt ne leere datei.

    die müßtet du dann per fc erglichen können.



  • dEUs schrieb:

    Einer ist z.B. dass ich mich zu wenig damit auskenne um zu wissen, was ich davon brauch und was nciht. Sollte eben nur das installiert werden, was auch benötigt wird und nicht Unmengen mehr...

    deswegen lagern die unmengen bei mit in d:\lager\vielleicht\brauch\ichs\mal\unxutils
    und wenn ich mal was brauche. kopiere ich ne datei nach c:\bin
    und das sieht erst so aus:

    14.04.2003  00:00            77.312 bzip2.exe
    11.11.1999  00:00            49.152 gzip.exe
    02.04.2005  12:03           249.856 plink.exe
    28.03.2005  23:12           262.144 pscp.exe
    13.08.2005  12:47           421.888 putty.exe
    15.05.2003  14:42           288.256 Rar.exe
    10.10.2000  00:00            65.536 rm.exe
    11.11.2001  00:00           114.688 tar.exe
    14.04.2003  00:00           102.400 unzip.exe
    14.04.2003  00:00           252.416 wget.exe
    

    und noch die awk.exe dazumachen, wäre keine blamage. oder do kopierst die awk.exe einfach in das verzeichnis, wo dein script liegt.

    temporäre dateien sind schlimmer.



  • Ok, dann mach ich das halt so. Wo bekomm ich die am Besten her? Habe mir gerade Cygwin installiert, aber das braucht nen Haufen mehr als bei dir im Verzeichnis ist...



  • dEUs schrieb:

    Ok, dann mach ich das halt so. Wo bekomm ich die am Besten her? Habe mir gerade Cygwin installiert, aber das braucht nen Haufen mehr als bei dir im Verzeichnis ist...

    cygwin kannste gleich wieder löschen.
    http://www.google.de/search?hl=de&q=unix+utils&meta=



  • Schön dass du mir das sagst. Den Eindruck hatte ich nämlich auch.
    Danke für den Link.



  • Grmml. Ich bin offensichtlich zu doof dafür. 😞

    Deswegen versuche ich jetzt etwas weitergefasst zu erklären, was ich eigentlich versuche:
    In Subversion (Source-Code-Verwaltung) gibt es sogenannte Hook-Scripts, die an bestimmten Stellen aufgerufen werden, z.B. bevor ein Commit zugelassen wird.
    Unter Windows wird dann in einem bestimmten Verzeichnis geschaut, ob dort eine pre-commit.bat oder pre-commit.exe liegt. Falls ja, wird diese ausgeführt. OK, d.h. ja schonmal, dass ich auf jedenfall teilweise mit windows-batch arbeiten muss, weil bat-Dateien nunmal mit der cmd.exe gestartet werden.

    (BTW: Habe mir die UnxUtils heruntergeladen, hoffe, die sind ok)
    Also habe ich mein bash-script in pre-commit.sh umbenannt und sh-Dateien mit der sh.exe aus den UnxUtils verknüpft.
    Diese Hook-Scripts können bestimmen, ob die Aktion fehlschlägt oder nicht (exit 0 oder 1). Und genau das ist jetzt wieder mein Problem. Ich ruf in meiner bat-Datei die sh-Datei auf, habe aber keine Möglichkeit an deren return-code zu kommen...

    exit pre-commit.sh
    

    Das hat's leider nicht gebracht.

    Hilf mir bitte mal ein wenig auf die Sprünge... 😞



  • hoi dEUs

    gibt das sh-script keinen ERRORLEVEL zurueck ?

    Meep Meep



  • dEUs schrieb:

    Ich ruf in meiner bat-Datei die sh-Datei auf, habe aber keine Möglichkeit an deren return-code zu kommen...

    exit pre-commit.sh
    

    Das hat's leider nicht gebracht.
    Hilf mir bitte mal ein wenig auf die Sprünge... 😞

    meinste in der batch
    if ERRORLEVEL ...
    ?



  • Ja, das tut! Danke 🙂

    Allerdings eine Frage: Funktioniert das auch korrekt auf Multithreaded Systemen?
    Laut http://gearbox.maem.umr.edu/batch/variable.htm ist das nämlich der Exit-Code des zuletzt beendeten Skripts/Programms, muss also nciht zwingend dasjenige sein, das ich aufgerufen habe...



  • dEUs schrieb:

    Ja, das tut! Danke 🙂

    Allerdings eine Frage: Funktioniert das auch korrekt auf Multithreaded Systemen?
    Laut http://gearbox.maem.umr.edu/batch/variable.htm ist das nämlich der Exit-Code des zuletzt beendeten Skripts/Programms, muss also nciht zwingend dasjenige sein, das ich aufgerufen habe...

    du hast doch ne cmd.exe um dich, die ERRORLEVEL sollte lokal zu dieser cmd-shell sein.



  • dEUs schrieb:

    if %MESSAGE% == ""
    

    Ich glaube Null-Vergleiche sind nicht erlaubt, und Du musstest Dir immer sowas basteln:

    IF %MESSAGE%KACKESEL == "KACKESEL" ... REM ggf. ohne "

    Wenn IF zuschlägt ist %MESSAGE% leer.



  • Sgt. Nukem schrieb:

    dEUs schrieb:

    if %MESSAGE% == ""
    

    Ich glaube Null-Vergleiche sind nicht erlaubt, und Du musstest Dir immer sowas basteln:

    IF %MESSAGE%KACKESEL == "KACKESEL" ... REM ggf. ohne "

    Wenn IF zuschlägt ist %MESSAGE% leer.

    ohne "

    der übliche weg ist aber mit " und die " ersetzen einfach KACKESEL
    if "%MESSAGE%" == ""



  • Wie auch immer...

    Was ich nur sagen wollte ist, daß cmd.exe bzw. command.exe jede sh/bash/tcsh/zsh/csh/... um Längen wegrul0rt!! 🤡 👍


Anmelden zum Antworten