Entwickler-Ecke

Windows API - ShellExecute und WinRAR Problem


Sahroma - Di 01.09.15 12:01
Titel: ShellExecute und WinRAR Problem
Hallo zusammen,

ich habe da ein kleines Problem mit dem ShellExecute Befehl. Und zwar schreibe ich für die Firma ein kleines Backup Programm, dass unter anderem ein bestimmten Ordner in .rar packt. Mein Code sieht bisher so aus:


Delphi-Quelltext
1:
ShellExecute(0,'open','winRAR.exe'' X:\test.rar X:\BackupTest\*. * 'nil, SW_Hide);                    


Das Problem hierbei ist, er erstellt irgendwie die .rar Datei nicht und ich komme nicht dahinter an was das liegen könnte. Das durchsuchen des Forums brachte mich auch nicht wirklich weiter (oder ich übersah etwas^^). Fehlt da etwas oder was ist der Grund?

Gruß
Sahroma

P.S. Das selbe Laufwerk ist nur zu Test Zwecken. ;)


Gammatester - Di 01.09.15 12:21

Auf der Kommandozeile funktioniert das auch nicht, sondern man muß zB ein a Kommando angeben, also zB winRAR.exe a test.rar *.* , vielleicht hilft bei Dir dann

Delphi-Quelltext
1:
ShellExecute(0,'open','winRAR.exe''a X:\test.rar X:\BackupTest\*. * 'nil, SW_Hide);                    


Delete - Di 01.09.15 12:21

Command line console (text mode) version - Rar.exe.

Man könnte natürlich rar.txt lesen, was man im WINRAR-Verzeichnis findet...
Alphabetic commands list

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
a   add files to an archive
c   add an archive comment
ch   change archive parameters
cv   convert archives
cw   write an archive comment to file
d   delete files from an archive
e   extract files from an archive, ignoring paths
f   freshen files within an archive
i   find string in archives
k   lock an archive
m   move files and folders to an archive
r   repair a damaged archive
rc   reconstruct missing volumes
rn   rename archived files
rr[N]   add data recovery record
rv[N]   create recovery volumes
s[name]   convert an archive to a self-extracting type
s-   remove SFX module
t   test archive files
u   update files within an archive
x   extract files from an archive with full paths


Folgendes funktioniert problemlos:

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button3Click(Sender: TObject);
begin
ShellExecute(0,'open','C:\Program Files (x86)\WinRAR\RAR.exe''a F:\RARtest.rar F:\Text\*.*'nil, SW_Show);
end;

oder so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button5Click(Sender: TObject);
var  strParams,FN : String;
begin
 strParams:= 'a F:\RARtest10.rar F:\Text\*.*';
 FN:= 'C:\Program Files (x86)\WinRAR\Rar.exe';
ShellExecute(Application.Handle,'OPEN',PWChar(FN), PWChar(strParams),NIL, SW_Hide);
end;


Sahroma - Di 01.09.15 12:59

Danke euch beiden hat mir auf jeden Fall geholfen. Ich habe nun den Code ein wenig modifiziert um noch ein Datum an den Dateinamen zu hängen. An die rar.text habe ich nicht gedacht. :oops:


Delphi-Quelltext
1:
ShellExecute(0,'open','winRAR.exe''a -ep1 -s -inul -agYYYY-MM-DD X:\test.rar X:\BackupTest\*. * 'nil, SW_Hide);                    


Und hier tauchte ein kleines Problem auf und zwar hängt er das Datum direkt hinter test (ohne Leerzeichen). Wie füge ich dazwischen ein Leerzeichen ein?


Delete - Di 01.09.15 13:59

So geht's bei mir: (" = SHIFT 2)

Delphi-Quelltext
1:
 strParams:= 'a -ep1 -s -inul -agYYYY-MM-DD F:\RARtest16" ".rar F:\Text\*.*';                    


Sahroma - Di 01.09.15 15:07

user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
So geht's bei mir: (" = SHIFT 2)

Delphi-Quelltext
1:
 strParams:= 'a -ep1 -s -inul -agYYYY-MM-DD F:\RARtest16" ".rar F:\Text\*.*';                    


Super danke dir hat einwandfrei funktioniert. :)