aivilon
Goto Top

Logfile - Ein Fehler eines Befehls in keiner Variante des Outputs drinn

Morgen zusammen

Folgendes Problem. Ich möchte ein Logfile aus 4 Teilen zusammenstellen.
Teil 1: Eigener Text
Teil 2: Fehlermeldung eines Befehls
Teil 3: Errorlevel
Teil 4: Zeitstempel

Teil 1, 3 und 4 sind auch in ordnung. Nur Teil 2 nicht.

hier mal mein Ausprobiercode:

ECHO "1>>Logfile.csv" >>Logfile.csv  
echo %S01A1%;%S01B1%;%S01C1%;%time% 1>>Logfile.csv

@echo off

set S01A1=Lade den NTUSER in einen HIVE
for /f "delims=" %%a in ('"reg.exe load HKU\NTUSER "C:\Users\Default User\NTUSER.DAT""') do set S01B1=%%a  
set S01C1=%Errorlevel%

pause

echo %S01A1%;%S01B1%;%S01C1%;%time%

pause

ECHO ">>Logfile.csv" >Logfile.csv  
echo %S01A1%;%S01B1%;%S01C1%;%time% >>Logfile.csv

ECHO "1>>Logfile.csv" >>Logfile.csv  
echo %S01A1%;%S01B1%;%S01C1%;%time% 1>>Logfile.csv

ECHO "1>>Logfile.csv 2<&1" >>Logfile.csv  
echo %S01A1%;%S01B1%;%S01C1%;%time% 1>>Logfile.csv 2<&1

ECHO "1>>Logfile.csv 2>&1" >>Logfile.csv  
echo %S01A1%;%S01B1%;%S01C1%;%time% 1>>Logfile.csv 2>&1

ECHO "2>>Logfile.csv" >>Logfile.csv  
echo %S01A1%;%S01B1%;%S01C1%;%time% 2>>Logfile.csv

ECHO "2>>Logfile.csv 2<&1" >>Logfile.csv  
echo %S01A1%;%S01B1%;%S01C1%;%time% 2>>Logfile.csv 2<&1

ECHO "2>>Logfile.csv 2>&1" >>Logfile.csv  
echo %S01A1%;%S01B1%;%S01C1%;%time% 2>>Logfile.csv 2>&1

ECHO ">>Logfile.csv 2<&1" >>Logfile.csv  
echo %S01A1%;%S01B1%;%S01C1%;%time% >>Logfile.csv 2<&1

ECHO ">>Logfile.csv 2>&1" >>Logfile.csv  
echo %S01A1%;%S01B1%;%S01C1%;%time% >>Logfile.csv 2>&1


pause


Wenn ich
reg.exe load HKU\NTUSER "C:\Users\Default User\NTUSER.DAT"  
in einem Commandprompt ausführe bekomme ich folgende Fehlermeldung:
Fehler: Der angegebene Registrierungsschlüssel oder Wert konnte nicht gefunden werden.
Diese Fehlermeldung müsste eigentlich in die Variable von Teil B.

Im Code oben sind alle mir bekannten Redirects Combinationen. Keine davon enthält alle Teile.


Wie müsste der >>Logfile.csv aussehen, wenn ich alle meine im Vorwort beschriebenen Teile im CSV haben möchte?

Danke und grüsse
aivilon

Content-ID: 181487

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

Ausgedruckt am: 18.11.2024 um 03:11 Uhr

bastla
bastla 06.03.2012 um 10:47:13 Uhr
Goto Top
Hallo aivilon!

Da ja der Fehler in Zeile 8 auftritt, musst Du die Ausgabe auch dort umleiten:
for /f "delims=" %%a in ('reg.exe load HKU\NTUSER "C:\Users\Default User\NTUSER.DAT" 2^>^>Logfile.csv') do set "S01B1=%%a"
Grüße
bastla
Skyemugen
Skyemugen 06.03.2012 um 11:48:00 Uhr
Goto Top
Aloha bastla,

ich verstand es eher so, dass er
for /f "delims=" %%a in ('reg.exe load HKU\NTUSER "C:\Users\Default User\NTUSER.DAT" 2^>%temp%\datei.log') do set "S01B1=%%a"  
if not defined S01B1 for /f "usebackq delims=" %%s in ("%temp%\datei.log") do set "S01B1=%%s"  
wollte

Diese Fehlermeldung müsste eigentlich in die Variable von Teil B.

wozu er den Errorlevel allerdings zusätzlich ausgeben lässt ...

greetz André

P.S.: Gibt es keine schönere Methode den Handle in eine Variable zu packen *grübel*
aivilon
aivilon 06.03.2012 um 12:39:34 Uhr
Goto Top
Zitat von @Skyemugen:
Aloha bastla,

ich verstand es eher so, dass er
for /f "delims=" %%a in ('reg.exe load HKU\NTUSER "C:\Users\Default User\NTUSER.DAT"  
> 2^>%temp%\datei.log') do set "S01B1=%%a"  
> if not defined S01B1 for /f "usebackq delims=" %%s in ("%temp%\datei.log") do set  
> "S01B1=%%s"  
wollte

jep. die Fehlermeldung muss in die Variable S01B1 face-smile

> Diese Fehlermeldung müsste eigentlich in die Variable von Teil B.

wozu er den Errorlevel allerdings zusätzlich ausgeben lässt ...

muss ich doch fast? oder kann ich den auch gleich direkt in eine zweite variable schreiben?

P.S.: Gibt es keine schönere Methode den Handle in eine Variable zu packen *grübel*

unschön ja...aber ich wüsste auch keine andere methode... :/
Skyemugen
Skyemugen 06.03.2012 um 12:53:56 Uhr
Goto Top
Aloha,

wozu benötigst du den Errorlevel extra, wenn du entweder die korrekte Ausführung oder die Fehlerausgabe in S01B1 hast?

Verstehe ich nachwievor nicht ...

greetz André
aivilon
aivilon 06.03.2012 um 15:01:02 Uhr
Goto Top
Zitat von @Skyemugen:
Aloha,

wozu benötigst du den Errorlevel extra, wenn du entweder die korrekte Ausführung oder die Fehlerausgabe in
S01B1 hast?

Verstehe ich nachwievor nicht ...

greetz André

Ach so...jetzt verstehe ich.

ganz einfaches Grundprinzip:

Chef will, Chef bekommt *grins*

und vorallem wende das in nem csv hast, kannst runterscrollen und siehts wo keine null steht dass was falsch abgelaufen ist, ohne dass du 50 Zeilen einzeln durchstudieren kannst ;)
bastla
bastla 06.03.2012 um 20:21:10 Uhr
Goto Top
@skye
Gibt es keine schönere Methode den Handle in eine Variable zu packen
Geringfügig schöner (aber noch lange nicht attraktiv face-wink):
for /f "delims=" %%a in ('reg.exe load HKU\NTUSER "C:\Users\Default User\NTUSER.DAT" 2^>%temp%\datei.log') do set "S01B1=%%a"  
if not defined S01B1 set /p S01B1=<%temp%\datei.log
Grüße
bastla
Skyemugen
Skyemugen 07.03.2012 um 07:14:34 Uhr
Goto Top
Aloha bastla,

ich dachte nicht, dass du in die Falle tappst, denn die Ausgabe hat leider eine leere Zeile #1 und daher bleibt set /p erfolglos :P

greetz André


EDIT: POC
07.03.2012  7:29:21,78 E:\Skripte
>for /F "delims=" %a in ('reg.exe load HKU\NTUSER "C:\Users\Default User\NTUSER.  
DAT" 2>C:\DOKUME~1\Benutzer\LOKALE~1\Temp\datei.log') do set "S01B1=%a"  
------

07.03.2012  7:29:21,84 E:\Skripte
>type C:\DOKUME~1\Benutzer\LOKALE~1\Temp\datei.log

Fehler: Der angegebene Registrierungsschl³ssel oder Wert konnte nicht gefunden w
erden.
------

07.03.2012  7:29:21,84 E:\Skripte
>if not defined S01B1 set /p S01B1= 0<C:\DOKUME~1\Benutzer\LOKALE~1\Temp\datei.l
og
07.03.2012  7:29:21,84 E:\Skripte
>echo
ECHO ist eingeschaltet (ON).
------

07.03.2012  7:29:21,84 E:\Skripte
>if not defined S01B1 for /F "usebackq delims=" %s in ("C:\DOKUME~1\Benutzer\LOK  
ALE~1\Temp\datei.log") do set "S01B1=%s"  

07.03.2012  7:29:21,84 E:\Skripte
>set "S01B1=Fehler: Der angegebene Registrierungsschl³ssel oder Wert konnte nich  
t gefunden werden."  
aivilon
aivilon 07.03.2012 um 07:24:26 Uhr
Goto Top
Moin Moin

Also Skye
Hat wunderbar funktioniert. Ich danke dir =)

@bastla

klar ist das nicht schön. kennst du evtl eine schönere Variante? =)


Grüsse
bastla
bastla 07.03.2012 um 09:01:45 Uhr
Goto Top
[OT] @skye
POC
Dir hätte ich das doch auch so geglaubt ... face-wink

Grüße
bastla
[/OT]
Skyemugen
Skyemugen 07.03.2012 um 09:08:04 Uhr
Goto Top
Aloha bastla,

I know, mir war nur mal so face-wink

Hatte mich gestern auch verwundert, dass set /p keinen Erfolg brachte aber dass du mir das dann vorschlägst, wo ich extra deswegen die Schleife bauen musste *sniff*, du hättest also nicht geglaubt, dass ich diesen Weg sinnvollerweise längst gegangen wäre face-sad Kein Vertrauen ...

*hust* Egal, aivilon, wann sehen wir denn den ökofreundlichen Marker am Fred kleben? Oder ist hier irgendwo noch etwas versteckt offen?

greetz André
bastla
bastla 07.03.2012 um 09:15:21 Uhr
Goto Top
@skye
du hättest also nicht geglaubt, dass ich diesen Weg sinnvollerweise längst gegangen wäre face-sad
War leider nur so en passant - wenn ich mir die Zeit genommen hätte, darüber nachzudenken, hätte ich es auch gleich testen können ... face-wink

Grüße
bastla