donnobre
Goto Top

Komplette batch logfile

Hallo zusammen, wieder wende ich mich mit einem Problem an euch

also meine frage ist ob ich, alles was in einer batch pasiert als logfile in eine datei schreiben kann, ohne es 200 mal schreiben zu müßen

Beispiel:

set log=c:\logfile.txt

call :kopieren ( sowas geht leider nicht >%log%)

:kopieren
xcopy ...
if exist ... (
xcopy ... 
) else (
echo
)
xcopy ...
xcopy ...

hatte mich schon durch mehrere Foren durchgelesen aber leider nicht das passende gefunden. Es gab mal einen ähnlichen Beitrag
Batch-Ausgabe in Logfile UND auf Bildschirm?
leider gab es dort aber keine antwort ausser eine 2te batch zu schreiben.

Vielen dank im voraus

Content-Key: 168261

Url: https://administrator.de/contentid/168261

Printed on: April 19, 2024 at 13:04 o'clock

Member: Friemler
Friemler Jun 19, 2011 at 13:33:11 (UTC)
Goto Top
Hallo DONNobre,

schau Dir mal diese Anleitung an. Wegen verschiedener Nachteile der einzelnen Lösungen mit Batchscript würde ich auf einem privat genutzten Rechner die Lösung mit dem UNIX-Tool TEE bevorzugen. Das Programm kann hier als Bestandteil einer Sammlung von auf Windows portierten UNIX-Tools heruntergeladen werden. Nach dem Auspacken des ZIP-Files befindet sich TEE.exe im Verzeichnis usr\local\wbin.

Gruß
Friemler
Member: Hitman4021
Hitman4021 Jun 19, 2011 at 13:46:18 (UTC)
Goto Top
Du hast 3 Standardkanäle:

Kanal 0 = Standardeingabe = STDIN (Tastatur)
Kanal 1 = Standardausgabe = STDOUT (Monitor/Terminal)
Kanal 2 = Standardfehlerausgabe =STDERR (Fehlerkanal)

Sry habe die Linux Befehle im Kof gehabt. Unter Windows keine Ahnung. Aber villeicht helfen dir die Kanäle ja auch was ;)

Gruß Hitman
Member: Biber
Biber Jun 19, 2011 at 15:26:34 (UTC)
Goto Top
Moin DONNobre,

mach da nicht so viel Heckmeck drum - du willst ja einfach alles umleiten und nicht auf zwei Kanälen gleichzeitig schreiben.

Also füge einfach eine zusätzliche Zeile 2 in deinen Schnipsel ein nach folgender Skizze:
:: dieser Schnipsel heisst MachEinDIR.cmd
@echo off & Setlocal
If "%1" NEQ "LeiteAllesUm" %0 LeiteAllesUm >%~dpn0.log  
dir *.cmd

Dieser Beispielschnipsel namens "MachEinDIR.cmd" hat als einzigen Nutz-Code das "Dir *.cmd" (entspricht deiner gesamten XCopy-Bandwurmarie.

Wenn du das Beispiel aufrufst as is, dann wird alles in ein Logfile namens {PfadDerBatchdatei}\MachEinDIR.log geschrieben.

Bei dir wäre einzusetzen die Zeile
If "%1" NEQ "LeiteAllesUm" %0 LeiteAllesUm >%log%
-oder-
If "%1" NEQ "LeiteAllesUm" %0 LeiteAllesUm 2>&1 >%log%
...wenn auch Fehermeldungen in der *.log landen sollen (also die auf Kanal 2 = STDERR geleiteten.

Grüße
Biber