Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ShellExecute: Batch wird nicht ausgeführt (https://www.delphipraxis.net/132868-shellexecute-batch-wird-nicht-ausgefuehrt.html)

coly546 21. Apr 2009 01:47


ShellExecute: Batch wird nicht ausgeführt
 
Guten Morgen,
ich habe ein Problem mit dem Befehl ShellExecute.
Und zwar möchte ich mit einer Konsolenanwendung eine Batch-Datei ausführen.
Mein Programm sieht wie folgt aus:
Delphi-Quellcode:
program Batch;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils, ShellAPI;



begin
ShellExecute(0, Nil,
PChar('C:\Dokumente und Einstellungen\Admin\Desktop\new\Datei.bat'), Nil, Nil, SW_NORMAL);
end.
Meine Problem ist, dass die Batch-Datei nicht ausgeführt wird.
Die Batch-Datei funktioniert aber an sich (wenn ich die manuell ausführe).
Könnte mir bitte Jemand sagen, wie ich das anstellen kann - so das es funktioniert?
Ich habe auch schon im Forum gesucht und über google, leider ohne Erfolg.

Falls das eine Rolle spielen sollte:
Ich sitze an einen PC auf dem Win XP Pro SP3 und Delphi 2009 installiert ist.

Ich danke euch bereits im voraus.

himitsu 21. Apr 2009 02:03

Re: ShellExecute: Batch wird nicht ausgeführtProblem
 
Was besagt ger Rückgabewert der Funktion?

coly546 21. Apr 2009 02:05

Re: ShellExecute: Batch wird nicht ausgeführtProblem
 
Öhm...Rückgabewert? :oops:
Ich möchte doch nur eine Batch-Datei ausführen.


//EDIT:
Entschuldigt bitte meinen Beitrag,
ich hatte das Programm davor nicht gespeichert und einfach so ausgeführt.
Nun funktioniert alles, nachdem ich das Programm gespeichert habe.




Entschuldigt bitte... :oops:

PS: man sollte nicht mehr so spät programmieren... :x

Mithrandir 21. Apr 2009 02:15

Re: ShellExecute: Batch wird nicht ausgeführtProblem
 
Das Problem ist, dass eine Batchdatei nunmal über die Kommandozeile ausgeführt wird, und nicht über den Explorer.

Es sollte so klappen:

Delphi-Quellcode:
ShellExecute(0,'open','cmd','C:\Dokumente und Einstellungen\Admin\Desktop\new\Datei.bat',nil,SW_HIDE);
Nacht,
Daniel

//Edit: Ach, geht doch? Wieder was gelernt...

himitsu 21. Apr 2009 03:46

Re: ShellExecute: Batch wird nicht ausgeführt
 
ShellExecute liefert ein Result und dieses könnte/sollte man prüfen,
denn daran kann man erkennen ob die Funktion erfolgreich ausgeführt werden konnte und wenn nich, dann sieht man WARUM es nicht erfolgreich war.

jaenicke 21. Apr 2009 04:02

Re: ShellExecute: Batch wird nicht ausgeführtProblem
 
Zitat:

Zitat von Daniel G
//Edit: Ach, geht doch? Wieder was gelernt...

Du kannst ja auch im Windows Explorer darauf doppelklicken. Wenn du aber sie so ausführen möchtest wie du es geschrieben hast, dann fehlen die Anführungszeichen und der Parameter /c oder /k.

coly546 21. Apr 2009 19:31

Re: ShellExecute: Batch wird nicht ausgeführt
 
Danke für alle Antworten.
Die Batch-Datei wird auch ausgeführt, wenn ich "mein" Code verwende.

Schön Abend noch :)

himitsu 21. Apr 2009 20:56

Re: ShellExecute: Batch wird nicht ausgeführt
 
die " sind aber nur bei den Parametern nötig.
denn dort werden die ' ' (Leerzeichen) als Trennzeichen verwendet
Delphi-Quellcode:
ShellExecute(0, 'open', 'cmd', '"C:\Dokumente und Einstellungen\Admin\Desktop\new\Datei.bat"', nil, SW_HIDE);

ShellExecute(0, 'open', 'C:\Dokumente und Einstellungen\Admin\Desktop\new\Datei.bat', nil, nil, SW_HIDE);
hier führt cmd praktisch 3 Dateien aus
[delphi]ShellExecute(0, 'open', 'cmd', 'C:\Dokumente und Einstellungen\Admin\Desktop\new\Datei.bat', nil, SW_HIDE);
also "C:\Dokumente", "und" und "Einstellungen\Admin\Desktop\new\Datei.bat"
und davon gibt es wohl garnichts, also passiert auch nix

coly546 21. Apr 2009 21:59

Re: ShellExecute: Batch wird nicht ausgeführt
 
Danke für die Erläuterung,
dann werde ich das in Zukunft wohl so machen wie Du mir das jetzt hier geschrieben hast.

//Edit:

für was steht eigentlich das "nil" ?


Danke nochmal.

Meflin 21. Apr 2009 22:09

Re: ShellExecute: Batch wird nicht ausgeführt
 
Zitat:

Zitat von coly546
für was steht eigentlich das "nil" ?

nil = "nüscht" ;)

Nullpointer sozusagen, oder einfach ein undefinierter Pointer (mit nil sagst du der function/procedure, dass es für den entsprechenden Parameter keinen Pointer gibt).


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 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