DotNet (23.04.2016)
-
26.03.2016, 10:47 #1
Funktion mit Parameter in Batch-Script
In einer Batch-Datei möchte ich mir an mehreren Stellen Statuseinträge auf dem Bildschirm ausgeben lassen. Diese sollen einheitlich formatiert sein, z.B. mit aktuellem Datum und Uhrzeit. Damit ich das nicht immer kopieren muss, würde ich das gerne in eine Funktion auslagern. Das stellt mich vor ein großes Problem, weil Batch keine Funktionen zu kennen scheint. Mein Ansatz war eine Sprungmarke zusammen mit einer globalen Variable, die den Log-Text enthält. Vor dem Sprung wird die globale Variable auf den Text gesetzt und ausgegeben.
Das funktioniert, nur bringt es ein weiteres Problem mit sich: Durch den Sprung wird der Verlauf meines Scriptes unterbrochen. Ich müsste aus der Log-Sprungmarke anschließend wieder zurück in den normalen Ablauf springen. Von der Login her ist dies natürlich nicht möglich, weil ich dafür wissen müsste, von wo aus sie aufgerufen wird.
Um das Problem besser deutlich zu machen ein kleines Beispiel:
Code:@echo off set log="" echo Programmanweisung1 set log="Testeintrag" goto Log echo Nächste Programmanweisung :Log echo %log% pause
Code:Programmanweisung1 "Testeintrag" Drücken Sie eine beliebige Taste . . .
Code:Programmanweisung1 "Testeintrag" Nächste Programmanweisung Drücken Sie eine beliebige Taste . . .
Ein Batch-Script würde für meine Anforderungen auch voll ausreichen, den Funktionsumfang der Powershell brauche ich nicht. Nur für die Bildschirmausgabe wäre eine zentrale Logfunktion schön, um nicht immer kopieren zu müssen. Außerdem spart man sich Arbeit, wenn das Format mal geändert werden soll (z.B. detailliertere Zeitangabe mit ms).
Im Krieg gibt es keine Gewinner, nur Verlierer!
-
26.03.2016, 19:38 #2
- Registriert seit
- 09.11.2011
- Beiträge
- 126
Thanked 137 Times in 51 PostsAW: Funktion mit Parameter in Batch-Script
-
26.03.2016, 23:10 #3
AW: Funktion mit Parameter in Batch-Script
Der Link von Brainy liefert nach ein bisschen lesen zwar das gewünschte Ergebnis, aber hier ein bisschen technischer und direkter.
Sie wird sogar wortwörtlich übersprungen, weil GOTO einfach zu einer Marke führt und von dort aus weiter macht.
Durch CALL lässt sich dies umgehen. Wird die Sprungmarke durch CALL aufgerufen (und nicht "angesprungen"), kann mit goto :eof ans Dateiende gesprungen, wodurch der Aufruf (engl.: CALL) endet und mit der nächsten Anweisung weitergemacht.
Beispiel:
Spoiler:Geändert von CDLF (26.03.2016 um 23:11 Uhr)
-
The Following User Says Thank You to CDLF For This Useful Post:
Ähnliche Themen
-
Batch mit Maus bedienen???
Von Testgamer100 im Forum AndereAntworten: 3Letzter Beitrag: 04.02.2016, 20:42 -
(.bat) Batch Tutorial
Von MC Phlegmatisch im Forum TutorialsAntworten: 0Letzter Beitrag: 31.03.2012, 13:35 -
[C++] Grundwissen II (Funktionen und Parameter)
Von DMW007 im Forum C++Antworten: 0Letzter Beitrag: 19.03.2012, 21:56 -
[Mathe] Parameter bestimmen
Von Jeffrey im Forum BildungAntworten: 10Letzter Beitrag: 13.01.2012, 20:25 -
[Shell Script]Upload Script (7z & ncftp)
Von Sq252 im Forum ShowroomAntworten: 0Letzter Beitrag: 08.01.2012, 18:12
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.