Batch-Programmierung die 2.
-
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!!