Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit ShellExecute und SUBST (https://www.delphipraxis.net/43102-problem-mit-shellexecute-und-subst.html)

idontwantaname 29. Mär 2005 09:31


Problem mit ShellExecute und SUBST
 
Hallo :hi:

Ich will die Ausgabe von SUBST in eine Textdatei speichern, und zwar mit folgendem Code:
Delphi-Quellcode:
ShellExecute(Handle, 'open', 'SUBST', '> "I:\output.txt"', nil, SW_SHOW);
Nur leider funktioniert dieser Code nicht. Woran köntne das liegen ??
Ich habe es auch ohne die doppelten Anführungszeichen beim Dateinamen versucht.

Waldteufel 29. Mär 2005 09:38

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);

jfheins 29. Mär 2005 09:41

Re: Problem mit ShellExecute und SUBST
 
Besser:
Delphi-Quellcode:
ShellExecute(Handle, 'open', 'cmd', '/c "subst > I:\output.txt"', nil, SW_SHOW);
Geht wahrscheinlich beides, aber bei Windows kann man nie wissen, vielleicht ändert sich ja mal das Windows-verzeichnis ... (z.B. Bei Win2000 "WinNT")

idontwantaname 29. Mär 2005 09:44

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

idontwantaname 29. Mär 2005 09:46

Re: Problem mit ShellExecute und SUBST
 
Zitat:

Zitat von jfheins
Besser:
Delphi-Quellcode:
ShellExecute(Handle, 'open', 'cmd', '/c "subst > I:\output.txt"', nil, SW_SHOW);
Geht wahrscheinlich beides, aber bei Windows kann man nie wissen, vielleicht ändert sich ja mal das Windows-verzeichnis ... (z.B. Bei Win2000 "WinNT")

ich hab z.b. gar kein C:, naja, es ist ein dvd-laufwerk, deswegen habe ich eh von anfang an das verwendet

jfheins 29. Mär 2005 09:58

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);

idontwantaname 29. Mär 2005 10:01

Re: Problem mit ShellExecute und SUBST
 
hm, da hätte ich auch selber raufkommen können ....

jedenfalls danke an jfheins und Waldteufel

Mephistopheles 29. Mär 2005 12:40

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.

Christian Seehase 29. Mär 2005 16:58

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 06:06 Uhr.

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