![]() |
Problem mit ShellExecute und SUBST
Hallo :hi:
Ich will die Ausgabe von SUBST in eine Textdatei speichern, und zwar mit folgendem Code:
Delphi-Quellcode:
Nur leider funktioniert dieser Code nicht. Woran köntne das liegen ??
ShellExecute(Handle, 'open', 'SUBST', '> "I:\output.txt"', nil, SW_SHOW);
Ich habe es auch ohne die doppelten Anführungszeichen beim Dateinamen versucht. |
Re: Problem mit ShellExecute und SUBST
Es liegt daran, dass du SUBST mit dem Parameter '> "I:\output.txt"' aufrufst. Da Subst diesen Parameter nicht kennt, passiert auch nix. Ein-/Ausgabeumleitungen sind ein Feature von cmd.exe.
Deshalb empfehle Ich:
Delphi-Quellcode:
ShellExecute(Handle, 'open', 'C:\Windows\System32\cmd.exe', '/c "subst > I:\output.txt"', nil, SW_SHOW);
|
Re: Problem mit ShellExecute und SUBST
Besser:
Delphi-Quellcode:
Geht wahrscheinlich beides, aber bei Windows kann man nie wissen, vielleicht ändert sich ja mal das Windows-verzeichnis ... (z.B. Bei Win2000 "WinNT")
ShellExecute(Handle, 'open', 'cmd', '/c "subst > I:\output.txt"', nil, SW_SHOW);
|
Re: Problem mit ShellExecute und SUBST
und was mache ich, wenn im pfad der outputdatei leerzeichen vorkommen
da müsste ich ja die doppelten anführungszeichen verwenden |
Re: Problem mit ShellExecute und SUBST
Zitat:
|
Re: Problem mit ShellExecute und SUBST
So z.B.:
Delphi-Quellcode:
ShellExecute(Handle, 'open', 'cmd', '/c "ping web.de > "c:\my output.txt""', nil, SW_SHOW);
|
Re: Problem mit ShellExecute und SUBST
hm, da hätte ich auch selber raufkommen können ....
jedenfalls danke an jfheins und Waldteufel |
Re: Problem mit ShellExecute und SUBST
Noch besser: %ComSpec% auslesen um herauszufinden welcher Kommandozeileninterpreter benutzt wird.
Übrigens: mit "set c" könnt ihr den Wert selber auf Kommandozeile überprüfen. |
Re: Problem mit ShellExecute und SUBST
Moin Zusammen,
für den Fall, dass eine Umleitung mit > nicht funktioniert einfach mal mit 2> probieren, also z.B. subst 2> .... Wird keine Zahl, oder eine 1 unmittelbar vor dem > angegeben, so wird die Ausgabe von StdOut umgeleitet, also die "normalen" Meldungen, bzw. Ausgaben des Programmes. Nimmt man hingegen 2> so wird alles was das Programm über StdError ausgibt umgeleitet. Hiermit lassen sich dann also Fehlermeldungen aufzeichen/umleiten. Diese Umleitungen lassen sich auch kombinieren, z.B.:
Code:
xcopy 1> c:\temp\Meldung.txt 2> c:\temp\Fehler.txt
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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 by Thomas Breitkreuz