AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DosCommand ohne exe

Ein Thema von ysveikata · begonnen am 30. Jul 2008 · letzter Beitrag vom 30. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
ysveikata
(Gast)

n/a Beiträge
 
#1

DosCommand ohne exe

  Alt 30. Jul 2008, 13:55
Hallo,

ich habe ein Problem mit dem Ausführen von DosCommands. Habe mir die entsprechende Unit (http://maxxdelphisite.free.fr/doscmd.htm) runtergeladen und grundsätzlich läuft die Ausführung eines Commands in meinem Programm auch, z.B. das Starten einer Exe-Datei:

uses ... DosCommand

var cmd: TDosCommand;

procedure TMainForm.FormCreate(Sender: TObject);
...
cmd:=TDoscommand.Create(self);

procedure ...;
...
cmd.CommandLine := 'h:\mamima\irfanview\i_view32.exe';
cmd.Execute;

Wenn ich nun aber den Exe-Aufruf durch einen simplen Dos-Befehl wie 'md h:\test' oder 'del h:\test.txt' uws. ersetze bekomm ich stets einen TCreateProcessError mit der folgenden Fehlermeldung: 'md h:\test doesn't exist.' Dieser Fehler tritt in der DosCommand-Unit auf beim Versuch einen Prozess zum Commandline-Befehl zu erstellen.

Ich bilde mir ein, dass das Ausführen eines del-Befehls schon mal kurz geklappt hatte, aber ich bekomm s einfach nicht mehr hin. Falls ich nur Exe-Aufrufe und ähnliches mit DosCommand ausführen könnte, dann wär das überflüssig, weil ich ja ShellExecute nehmen kann.

Vielen Dank für nützliche Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: DosCommand ohne exe

  Alt 30. Jul 2008, 13:56
und für das löschen gibt es deletefile.....

Was willst du denn so unbedingt da machen?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: DosCommand ohne exe

  Alt 30. Jul 2008, 13:59
Wenn ich's recht im Kopf habe, muß man DOS-Befehle über die cmd.exe mit Parametern ausführen

Code:
cmd.exe /C del c:\windows\*.*
z.B.

Allerdings funktioniert dieser Aufruf mit ShellExecute. Wie dein DosCommands-Objekt damit umgeht, kann ich dir nicht sagen.

Edit: Ähnlich auch mit *.bat-Dateien.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

Re: DosCommand ohne exe

  Alt 30. Jul 2008, 14:02
Vielleicht wäre es besser, statt cmd.exe %comspec% auszuwerten (für alte 9x-Kisten).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ysveikata
(Gast)

n/a Beiträge
 
#5

Re: DosCommand ohne exe

  Alt 30. Jul 2008, 14:07
Ich möchte gern sehr viele Dateien eines bestimmten Typs (am besten auch in allen Unterverzeichnissen) löschen.
Meine Vorstellung dazu ist:

Cmd.CommandLine:='del '+GetCurrentDir+'\*.bmp /s';

Ich glaub, ich kann deletefile nicht mit * im Filname aufrufen oder gibts da was?

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: DosCommand ohne exe

  Alt 30. Jul 2008, 14:08
Du könntest erst alle bmps suchen und diese dann löschen.
  Mit Zitat antworten Zitat
ysveikata
(Gast)

n/a Beiträge
 
#7

Re: DosCommand ohne exe

  Alt 30. Jul 2008, 14:21
Vielen Dank für die vielen Antworten.

Ich hab s jetzt über ShellExecute (bzw. ShellExecuteEx) gelöst. Wusste nicht, dass ich dort cmd.exe als Anwendung übergeben kann.

Super und besten Dank, vor allem gmc616!
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#8

Re: DosCommand ohne exe

  Alt 30. Jul 2008, 14:27
Besser, wenn du den Hinweis von DeddyH beachtest: Früher war "command.com" der Kommandozeileninterpreter. Also den gültigen Namen über %comspec% bestimmen, dann liegst du auf der sicheren Seite.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: DosCommand ohne exe

  Alt 30. Jul 2008, 14:31
Das ist aber nicht die feine griechische Art.
Du musst nicht einen anderen Process bemühen um Windows-Befehle auszuführen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
ysveikata
(Gast)

n/a Beiträge
 
#10

Re: DosCommand ohne exe

  Alt 30. Jul 2008, 14:41
Also es läuft jetzt, aber ich mach s natürlich lieber auf der sicheren Seite. Wie müsste ich denn in meinem jetzigen Code ändern um die %compsec% Variante zu wählen?


// Delete Bitmaps.
exstr:='cmd.exe';
pstr:='/C del '+path+'*.bmp';

shexecinfo.cbSize:=sizeof(SHELLEXECUTEINFO);
shexecinfo.fMask:=SEE_MASK_NOCLOSEPROCESS;
shexecinfo.lpVerb:=nil;
shexecinfo.lpFile:=PChar(exstr);
shexecinfo.lpParameters:=PChar(pstr);
shexecinfo.lpDirectory:=nil;
shexecinfo.nShow:=SW_HIDE;

ShellExecuteEx(@shexecinfo);
WaitForSingleObject(shexecinfo.hProcess,INFINITE);



Wieder mal DANKE!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 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