pbelcl
Goto Top

Trennzeile für Logdateien in Batch automatisieren

Ich habe ein Batch welches mit Trennlinien in Logdateien macht.

Ich habe eine Batchdatei die Trennzeilen in Logdateien für mich schreibt.
Dazu übergebe ich dem Batch als %1 den Namen des Logfiles und als Parameter %2 eine Zahl (60, 70 oder 80)

@echo off

if %1!==! goto end
if %2!==! echo  -------------------------------------------------->>%1&goto end
if %2==60 echo  ------------------------------------------------------------>>%1&goto end
if %2==70 echo  ---------------------------------------------------------------------->>%1&goto end
if %2==80 echo  -------------------------------------------------------------------------------->>%1&goto end
if not %2!==! echo  ---------------------------------------------------------------------------------------------------->>%1&goto end
goto end

:end

Nun wär es nett wenn ich das Ganze etwas eleganter machen könnte.
Zum Beispiel dass dieses Batch eine beliebige Anzahl von "-" an die Datei "%1" übergibt.

Leider komm ich mit diesem Schleifenfunktionen noch nicht so ganz klar ;-(
Hat jemand einen Tipp für mich?

Content-ID: 178390

Url: https://administrator.de/forum/trennzeile-fuer-logdateien-in-batch-automatisieren-178390.html

Ausgedruckt am: 23.12.2024 um 07:12 Uhr

bastla
bastla 04.01.2012 um 18:00:36 Uhr
Goto Top
Hallo pbelcl! (Von Begrüßungen hältst Du offensichtlich weiterhin nix ... face-sad)

Wenn Du eine Variable mit der nötigen Anzahl an Zeichen erzeugst, kannst Du die gewünschte Anzahl danach unter Verwendung eines Teilstrings ausgeben, also etwa:
@echo off & setlocal
if %1!==! goto end
if %2!==! echo  -------------------------------------------------->>%1& goto end
set "Trenn=----------------------------------------------------------------------------------------------------"  
call echo %%Trenn:~,%2%%>>%1
:end
Grüße
bastla
pbelcl
pbelcl 05.01.2012 um 18:55:53 Uhr
Goto Top
Habs ausprobiert, funktioniert super!!

Zitat von @bastla:
set "Trenn=----------------------------------------------------------------------------------------------------"

Und die maximal mögliche Zeichenzahl ergibt sich aus der Anzahl der Zeichen in "trenn", soweit richtig?

Danke und liebe Grüße
Paul
bastla
bastla 05.01.2012 um 19:21:12 Uhr
Goto Top
Hallo pbelcl!
Und die maximal mögliche Zeichenzahl ergibt sich aus der Anzahl der Zeichen in "trenn", soweit richtig?
Ja; alternativ ließe sich die Trennzeile auch "maßgeschneidert" mit
for /L %%i in (1,1,%2) do set /p=-<nul>>%1
>>%1 echo\
erzeugen ...

Grüße
bastla
pbelcl
pbelcl 06.01.2012 um 12:23:09 Uhr
Goto Top
Hi,

Danke für diese Version, gefällt mir besser face-wink

Ich mag dich nicht nerven, aber würde es gern zumindest ansatzweise verstehen :

for /L %%i in (1,1,%2) do set /p=-<nul>>%1
Wozu ist das "<nul" eigentlich da?
Der Code macht bei mit im Test immer ein Leerzeichen nach einem Bindestrich !?
liegt das vielleicht daran?

 >>%1 echo\
Ist für ein CR-LF am Ende richtig??
bastla
bastla 06.01.2012, aktualisiert am 18.10.2012 um 18:49:41 Uhr
Goto Top
Hallo pbelcl!
Wozu ist das "<nul" eigentlich da?
Schau Dir mal dieses Tutorial an ...
Da in der Schleife die Bindstriche ohne Zeilenschaltung (und ganz ohne Leerzeichen - mit der eben von Dir nochmals geposteten Codezeile getestet) geschrieben werden, wird tatsächlich am Ende noch eine Zeilenschaltung (mit "echo\" erzeugt) benötigt ...

Grüße
bastla
pbelcl
pbelcl 06.01.2012 um 15:55:37 Uhr
Goto Top
Super, danke für den Link.
Da werd ich gleich reinschauen!!

Das mit den Leerzeichen werd ich mir nochmal ansehen, denn es passiert nur manchmal, sehr seltsam.
Ist mir aber egal, denn eine Trennzeile sieht auch mit Leerzeichen ganz nett aus face-wink

Danke nochmal für deine Hilfe!
pbelcl
pbelcl 09.01.2012, aktualisiert am 18.10.2012 um 18:49:42 Uhr
Goto Top
Zitat von @bastla:
Schau Dir mal dieses Tutorial an ...
Hab mir das Tutorial mal genau durchgelesen.
Nun weiß ich auch wieso der Code:
for /L %%i in (1,1,%2) do set/p=-<nul>>%1 
>>%1 echo\
Immer nach jedem "-" ein Leerzeichen macht. Im Tutorial steht dass soetwas in Schaltjahren angeblich passiert!
Wenn das kein Scherz ist, dann ist die Ursache bereits lokalisiert.

Drängt sich nur die Frage auf, WAS diese (Fehl)Funktion mit einem Schaltjahr zu tun hat ....
Irgendeine Ahnung ??
bastla
bastla 09.01.2012, aktualisiert am 01.05.2014 um 19:46:37 Uhr
Goto Top
Hallo pbelcl!

Tun wir mal so, als wäre die Frage
WAS diese (Fehl)Funktion mit einem Schaltjahr zu tun hat ....
ernst gemeint:

Da im Schnitt weniger als 25 % aller Jahre Schaltjahre sind, wollte Ren damit nur sagen: "Kommt nicht sehr oft vor" ... face-wink

Eine Begründung, warum es die genannte Fehlfunktion überhaupt gibt, habe ich allerdings nicht anzubieten. face-sad

Grüße
bastla
pbelcl
pbelcl 09.01.2012 um 17:42:50 Uhr
Goto Top
Alles klar, dann werd ich bis 2013 warten und inzwischen den Code aus deinem ersten Posting verwenden face-smile
Biber
Biber 09.01.2012 um 18:29:55 Uhr
Goto Top
und weil sich doch jeder montags über gute Nachrichten freut....
Zitat von @pbelcl:
Alles klar, dann werd ich bis 2013 warten und inzwischen den Code aus deinem ersten Posting verwenden face-smile
Laut dem Kalender der Maya haben wir diese merkwürdigen Schaltjahre erstmal hinter uns gebracht.
Mit irgendwelchem Unbill deswegen brauchen wir auf Sicht nicht mehr rechnen. face-wink

Grüße
Biber