Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   BAT/CMD > Umleitung der Ausgabe (https://www.delphipraxis.net/167556-bat-cmd-umleitung-der-ausgabe.html)

himitsu 5. Apr 2012 09:48

Betriebssystem: Win 7

BAT/CMD > Umleitung der Ausgabe
 
Moin,

ich hab da grade ein eigenartiges Problemchen.
Die Umleitung > und >> funktioniert nicht mehr, hier auf 'nem Windows Server 2008.

Sogar bei Befehlen wie RD wird die Fehlermeldung nicht in die Zieldatei geschrieben, sondern landet weiterhin im Fenster.
(sonst hätte ich noch vermuten können, es liegt an der aufgerufenen EXE)

Original wird die ganze Datei umgeleitet, über ShellExecute mit
Delphi-Quellcode:
%ComSpec% /C xyz.bat > abc.log
, aber auch direkt in der Komandozeile (CMD) funktioniert ein
Delphi-Quellcode:
xyz.bat > abc.log
nicht.
Es werden immer nur die Befehle der BAT in die Logdatei geschrieben, aber nicht die Meldungen/Ausgaben der Programme.


Selbst wenn ich versuche hinter jeden einzelnen Befehl, in der BAT, die Umleitung zu schreiben, gibt es keinen Unterschied. :shock:
Das Einzige, was funktioniert, ist ECHO. Dessen Ausgaben landen in dem Log.


Ist da vielleicht irgendwas an der Befehlerweiterung falsch eingestellt,
oder wieso funktioniert das nicht?

Ach ja, ob ich die Datei *.bat oder *.cmd nenne, macht keinen Unterschied
und es werden überall nur absoluter Pfade verwendet.

Bummi 5. Apr 2012 09:54

AW: BAT/CMD > Umleitung der Ausgabe
 
Hast Du ein Beispiel

DIR > C:\temp\Dir.txt

in eine test.bat tut bei mir Server 2008 wie erwartet...

himitsu 5. Apr 2012 10:10

AW: BAT/CMD > Umleitung der Ausgabe
 
BackUp.bat
Code:
RD /S /Q H:\BackUp\120330
DEL /Q H:\BackUp\120401\*09.sql
DEL /Q H:\BackUp\120401\*15.sql
E:\EXE\pg_dump --disable-triggers -i -f H:\BackUp\120404\ab2.18.sql -t ab2 --column-inserts -F p -a -h localhost -p 5432 -S xxx -U xxx xxx
E:\EXE\pg_dump --disable-triggers -i -f H:\BackUp\120404\ab2_param.18.sql -t ab2_param --column-inserts -F p -a -h localhost -p 5432 -S xxx -U xxx xxx
...
BackUpCall.bat
Code:
"E:\EXE\BackUp\BackUp.bat" > "E:\EXE\BackUp\BackUp.1204041827.Log"
Delphi-Quellcode:
ShellExecute(ParentWindow, nil, PChar('C:\Windows\System32\cmd.exe'),
  Pointer('/C "E:\EXE\BackUp\BackUp.bat" > "E:\EXE\BackUp\BackUp.1204041827.Log"'), PChar(ExtractFileDir(ParamStr(0))), SW_NORMAL);

//oder
ShellExecute(ParentWindow, nil, PChar('E:\EXE\BackUp\BackUpCall.bat'), nil, PChar(ExtractFileDir(ParamStr(0))), SW_NORMAL);

// oder über die Komandozeile (macht keinen Unterschied, ob ShellExecute oder so)
"E:\EXE\BackUp\BackUp.bat" > "E:\EXE\BackUp\BackUp.1204041827.Log"

// bzw.
"E:\EXE\BackUp\BackUpCall.bat"

Es landen jeweils nur die Befehle aus der BAT in der Log, aber Fehlermeldungen ala "Das System kann die angegebene Datei nicht finden." (DEL kann nichts löschen, da nichts mehr da ist) und die Meldungen der pg_dump.exe landen im CMD-Fenster.

[Edit]
Delphi-Quellcode:
DIR > C:\temp\Dir.txt
wird umgeleitet, ebenso ein bei
Delphi-Quellcode:
DIR
, wenn die ausgabe der BAT umgeleitet wird,
aber scheinbar die "Fehlermeldungen" des RD und die Fehler-/Statusmeldungen der EXE nicht. :gruebel:

Klaus01 5. Apr 2012 10:12

AW: BAT/CMD > Umleitung der Ausgabe
 
Hallo,

werden die Ausgaben auf einer anderen Ebene (Standard error) ausgegeben und nicht auf standard output?
Wenn ja, musst Du diese auch umleiten.

dir k:\ 2> bla.txt wird die Fehlermeldung nach bla.txt geschrieben.

Grüße
Klaus

DeddyH 5. Apr 2012 10:13

AW: BAT/CMD > Umleitung der Ausgabe
 
Klappt es, wenn Du innerhalb der aufgerufenen Batchdatei umlenkst (nach %1 oder wie das da ging)?

himitsu 5. Apr 2012 10:22

AW: BAT/CMD > Umleitung der Ausgabe
 
Zitat:

Zitat von Klaus01 (Beitrag 1160316)
werden die Ausgaben auf einer anderen Ebene (Standard error) ausgegeben und nicht auf standard output?
Wenn ja, musst Du diese auch umleiten.

Und wie macht man das?
Bei CreateProcess ging das glaub ich irgendwie (muß ich nochmal nachgucken), aber wie macht man das hier?

Zitat:

Zitat von DeddyH (Beitrag 1160317)
Klappt es, wenn Du innerhalb der aufgerufenen Batchdatei umlenkst (nach %1 oder wie das da ging)?

Nee, das hab ich schon probiert (wie erwähnt).

Hier mal mein Versuch und außer den ECHOs steht nix im Log.
Code:
SET DUMP=E:\EXE\pg_dump
SET PARAM1=--disable-triggers -i
SET PARAM2=--column-inserts -F p -a -h localhost -p 5432 -S xxx -U xxx xxx
SET DEST=H:\BackUp\120401
SET LOG=E:\EXE\BackUp\ackUp.1204041827.Log

ECHO Backup xxx vom xx.xx.xxxx > %LOG%

ECHO. >> %LOG%
ECHO Lösche xyz >> %LOG%
RD /S /Q H:\ProdatSQL\BackUp_\120330 >> %LOG%

ECHO. >> %LOG%
ECHO Lösche xyz >> %LOG%
DEL /Q %DEST%\*09.sql >> %LOG%

ECHO. >> %LOG%
ECHO Lösche xyz >> %LOG%
DEL /Q %DEST%\*15.sql >> %LOG%

ECHO. >> %LOG%
ECHO Backuppe Tabelle xyz >> %LOG%
%DUMP% %PARAM1% -f %DEST%\ab2.18.sql -t ab2 %PARAM2% >> %LOG%

ECHO. >> %LOG%
ECHO Backuppe Tabelle xyz >> %LOG%
%DUMP% %PARAM1% -f %DEST%\ab2_resultparam.18.sql -t ab2_resultparam %PARAM2% >> %LOG%

ECHO. >> %LOG%
ECHO Backuppe Tabelle xyz >> %LOG%
%DUMP% %PARAM1% -f %DEST%\ab2_resultparam_log.18.sql -t ab2_resultparam_log %PARAM2% >> %LOG%
Also ECHO und DIR geht, aber sonst bisher nichts
Zitat:

Zitat von himitsu (Beitrag 1160313)
[Edit]
Delphi-Quellcode:
DIR > C:\temp\Dir.txt
wird umgeleitet, ebenso ein bei
Delphi-Quellcode:
DIR
, wenn die ausgabe der BAT umgeleitet wird,
aber scheinbar die "Fehlermeldungen" des RD und die Fehler-/Statusmeldungen der EXE nicht. :gruebel:


Klaus01 5. Apr 2012 10:26

AW: BAT/CMD > Umleitung der Ausgabe
 
Zitat:

Zitat von himitsu (Beitrag 1160320)
Zitat:

Zitat von Klaus01 (Beitrag 1160316)
werden die Ausgaben auf einer anderen Ebene (Standard error) ausgegeben und nicht auf standard output?
Wenn ja, musst Du diese auch umleiten.

Und wie macht man das?

Ein Beispiel ist hier zu finden:
http://sites.google.com/site/christi...d-out-umleiten

Grüße
Klaus

DeddyH 5. Apr 2012 10:27

AW: BAT/CMD > Umleitung der Ausgabe
 
Und bei
Code:
RD /S /Q H:\ProdatSQL\BackUp_\120330 >> %LOG% 2>&1
:?:

himitsu 5. Apr 2012 10:41

AW: BAT/CMD > Umleitung der Ausgabe
 
Code:
2>&1
sieht zwar irgendwie zu krypisch aus, aber es funktioniert. :thumb:

Ich kann mich aber nicht erinnern, daß ich früher mal solche Probleme hatte. :gruebel:
Aber ich glaub das letzte Mal hatte ich sowas noch unter Win2000/XP gemacht, vielleicht war's damals ja anders.

DeddyH 5. Apr 2012 10:44

AW: BAT/CMD > Umleitung der Ausgabe
 
http://www.microsoft.com/resources/d....mspx?mfr=true ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz