Ich versuche ein Programm zu entwickeln, um das 7-zip-Konsolenprogramm (7z.exe) über ShellExecute () zu betreiben und ihm eine computergenerierte Liste von Dateien zu übergeben.
Was ich jetzt tun möchte, ist Folgendes:
Ich möchte ihm eine Befehlszeile übergeben, in der er aufgefordert wird, Dateien einzuschließen und auszuschließen: dh
include these :
c:\path\path2\path
c:\path\path2\path__\
.... more files
exclude these :
c:\path\path2\path\data\files\foo\bar\fish.dat
c:\path\path2\path__\data\slug.mp3
.... more files
Also mache ich eine Kommandozeile wie folgt:
7z a -t7z -i!"...file to include" -x!"file to exclude" ... etc etc
Ich wiederhole nur aus dem Speicher, damit ich weiß, dass die Befehlszeile möglicherweise nicht korrekt ist
Aber was ich eingebe, funktioniert nicht. Ich bekomme einfach alles in Pfad und Pfad__. Was ich will, ist ein Archiv, das innen so aussieht:
.\
path\
data\
files\
foo\
bar\
<everything in path\data\files\foo\bar except for foo.dat>
path__\
data\
<everything in path__\data\ except for slug.mp3>
Könnte ich Hilfe haben, um dieses Ergebnis zu erzielen? Vielen Dank
command-line
archiving
7-zip
zsteve
quelle
quelle
Antworten:
Ohne Ihren genauen
7z
Befehl zu kennen, wird nur geraten, aber hier ist es:7z a -t7z -ir@"files_to_include.txt" -xr@"files_to_exclude.txt" ....
Beachten Sie das
r
nach-i
und-x
für rekursiv. Sie haben wahrscheinlich auch@
vor dem Dateinamen anstelle des verwendet!
. (oder zumindest sollten Sie.!
wird verwendet, um Platzhalter in der Befehlszeile anzugeben :)Dann für Ihren
files_to_exclude.txt
Inhalt. Ich glaube, Sie sollten hier relative Pfade verwenden. Geben Sie also nicht diec:\....
vor Ihren Pfaden an. Wenn Ihre gemeinsamen Pfade im Include sindc:\path\path2
, müssen Sie dies aus dem Ausschluss löschen . Der Grund dafür ist, dass beim7z
Komprimieren Ihrer Dateien derc:\path\path2
-part bereits entfernt wurde (da nicht der gesamte Pfad gespeichert wird, sondern nur der relative Teil). Ihre Ausschlüsse stimmen also nicht mehr überein. Sie können dies sehen, weil sich beim Öffnen die .zipc:\path\path2
nicht in der .zip befindet. (Also Matching funktioniert nicht)Du
files_to_exclude.txt
solltest also so aussehen:Wenn Sie also nach dem Hinzufügen des
r
Nachher-i
und dem-x
Ändern des Neuenfiles_to_exclude.txt
immer noch Probleme haben, müssen wir Ihren tatsächlichen Befehl sehen.quelle