![]() |
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:
, aber auch direkt in der Komandozeile (CMD) funktioniert ein
%ComSpec% /C xyz.bat > abc.log
Delphi-Quellcode:
nicht.
xyz.bat > abc.log
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. |
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... |
AW: BAT/CMD > Umleitung der Ausgabe
BackUp.bat
Code:
BackUpCall.bat
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 ...
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:
wird umgeleitet, ebenso ein bei
DIR > C:\temp\Dir.txt
Delphi-Quellcode:
, wenn die ausgabe der BAT umgeleitet wird,
DIR
aber scheinbar die "Fehlermeldungen" des RD und die Fehler-/Statusmeldungen der EXE nicht. :gruebel: |
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 |
AW: BAT/CMD > Umleitung der Ausgabe
Klappt es, wenn Du innerhalb der aufgerufenen Batchdatei umlenkst (nach %1 oder wie das da ging)?
|
AW: BAT/CMD > Umleitung der Ausgabe
Zitat:
Bei CreateProcess ging das glaub ich irgendwie (muß ich nochmal nachgucken), aber wie macht man das hier? Zitat:
Hier mal mein Versuch und außer den ECHOs steht nix im Log.
Code:
Also ECHO und DIR geht, aber sonst bisher nichts
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% Zitat:
|
AW: BAT/CMD > Umleitung der Ausgabe
Zitat:
![]() Grüße Klaus |
AW: BAT/CMD > Umleitung der Ausgabe
Und bei
Code:
:?:
RD /S /Q H:\ProdatSQL\BackUp_\120330 >> %LOG% 2>&1
|
AW: BAT/CMD > Umleitung der Ausgabe
Code:
sieht zwar irgendwie zu krypisch aus, aber es funktioniert. :thumb:
2>&1
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. |
AW: BAT/CMD > Umleitung der Ausgabe
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz