Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Bei Rar.exe Kommandozeile, einen Ordner bei Archivierung ausschließen (https://www.delphipraxis.net/213243-bei-rar-exe-kommandozeile-einen-ordner-bei-archivierung-ausschliessen.html)

Alallart 23. Jun 2023 12:35

Bei Rar.exe Kommandozeile, einen Ordner bei Archivierung ausschließen
 
Vermutlich kennen sich einige hier mit Rar.exe (nicht WinRar.exe) und der Nutzung im Befehlszeilenmodus aus. Eigentlich kenne ich mich selbst gut mit dem Tool aus, aber eine Sache klappt bei mir nicht. Das ist das Ausschließen von Ordnern bei der Archivierung.

Mit dem Schalter -x<f> kann man das angegebene Verzeichnis <f> oder die angegebene Datei <f> von der Verarbeitung ausschließen. Bei mir funktioniert das nicht, egal wie ich es auch mache.

Beispiel: nehmen wir an ich habe im Laufwerk C:\ den Ordner Temp. Im Ordner Temp habe ich den Ordner Logs. Ich will den Ordner Temp archivieren, ohne den Ordner Logs. Also gebe ich folgende Zeile ein:
Code:
Rar.exe a Test.rar -x"C:\Temp\Logs" "C:\Temp"
Egal in welcher Variation ich es auch eingebe, mit absoluten Pfaden, mit relativen, mit -r, oder ohne, wie auch immer, der Ordner Logs wird immer mit archiviert. Was mache ich falsch?

himitsu 23. Jun 2023 12:45

AW: Bei Rar.exe Kommandozeile, einen Ordner bei Archivierung ausschließen
 
Die rar.exe won wo, oder meinst du doch die vom WinRAR?


Probiere es mal ohne " oder mit " um Alles drumrum.

-xC:\Temp\Logs
-xC:\Temp\Logs\
"-xC:\Temp\Logs"
"-xC:\Temp\Logs\"

Reinhold 23. Jun 2023 15:57

AW: Bei Rar.exe Kommandozeile, einen Ordner bei Archivierung ausschließen
 
Soweit mir bekannt ist, kann Rar.exe nur Dateien ausschließen. Ausschließen von Verzeichnisse ist nicht möglich.

Vielleicht hilft dies:
-xC:\Temp\Logs\*.*
-x"C:\Temp\Logs\*.*"

Dalai 23. Jun 2023 17:27

AW: Bei Rar.exe Kommandozeile, einen Ordner bei Archivierung ausschließen
 
Die WinRAR-Hilfe im Bereich Befehlszeilenmodus -> Schalter -> -x beschreibt diesen Schalter und dessen Verhalten eigentlich ziemlich gut. Laut dieser Beschreibung geht (zumindest bei winrar.exe) auch ein Ausschluss von Verzeichnissen. Die Parameter und Schalter von rar.exe sind ja nahezu deckungsgleich mit denen von winrar.exe.

Grüße
Dalai

Gargoyl 23. Jun 2023 19:08

AW: Bei Rar.exe Kommandozeile, einen Ordner bei Archivierung ausschließen
 
laut Hilfe (und ich habs auch ausprobiert) ist folgendes korrekt:

Code:
Rar.exe a Test.rar -x"C:\Temp\Logs\" "C:\Temp"
das hier funktioniert auch
Code:
Rar.exe a Test.rar -x"C:\Temp\Logs\*.*" "C:\Temp"
fügt aber ein leeres Verzeichnis "Temp\Logs" zum Archiv hinzu (kann man mit dem Schalter -ed aber verhindern)

Alallart 24. Jun 2023 01:43

AW: Bei Rar.exe Kommandozeile, einen Ordner bei Archivierung ausschließen
 
Ich habe es gerade nochmal ausprobiert, und ich denke ich habe das Problem erkannt. Leider ist die Hilfe in dem Punkt undeutlich. Nicht falsch, aber missverständlich.

Was nicht funktioniert sind relative Pfade, die ich versucht habe umzusetzen. In den Hilfe-Beispielen wird zwar mit relativen Pfaden gearbeitet, aber nicht auf die Besonderheit hingewiesen, bzw. es steht da, man kann es leicht überlesen, wenn man nicht weiß, dass man es beachten muss.
Zitat:

Enthält die Dateimaske Wildcards, wird sie auf alle Dateien im aktuellen Verzeichnis und dessen Unterverzeichnissen angewendet. Ohne Wildcards ist die Dateimaske nicht rekursiv: Die Dateimaske "dateiname" schließt beim Archivieren nur die Datei 'dateiname' im aktuellen Verzeichnis (...) aus
Acha, ohne Wildcards ist die Dateimaske nicht rekursiv. Das ist der wichtige Satz. Zwar ist das im Beispiel richtig vorgeführt, aber wer achtet schon auf den Joker?
Zitat:

rar a -r -x*\temp\ sicherungc c:\*
Anders funktioniert es nicht. Hier werden alle Ordner mit dem Namen temp ausgeschlossen, weil davor ein Sternchen ist: -x*\temp\ . Sind zehn Ordner mit dem Namen temp vorhanden, werden sie alle ausgeschlossen (inkl. Unterordner). Ich habe das Sternchen übersehen, bzw. nicht drauf geachtet, und ging davon aus, dass man Ordner relativ zu dem ausgewählten Ordner angeben kann. Kann man wohl nicht.

Wenn man sich dessen bewusst ist, wird es auch klar, dass relative Pfade nicht funktionieren können. Denn schließlich kann man mehr als nur einen Ordner zum archivieren angeben. Auf welchen Ordner soll sich der relative Pfad beziehen?

Also, sowas ist nicht möcglich:
Code:
Rar.exe a Test.rar -x"\Logs" "C:\Temp"
höchstens sowas
Code:
Rar.exe a Test.rar -x"*\Logs" "C:\Temp"
Was aber geht, ist natürlich das (absolute Pfade):
Code:
Rar.exe a Test.rar -x"C:\Temp\Logs" "C:\Temp"
Das ist der Code aus dem ersten Post. Den habe ich als Beispiel aus dem Kopf geschrieben, ohne den zu überprüfen. Gedanklich ging es mir um relative Pfade, dann habe ich aber ein Beispiel mit einem absoluten Pfad geschrieben.

Ich habe zwar auch paar Beispiele mit absoluten Pfaden ausprobiert, aber andere als in dem Pseudo-Code. Bei meinem Test mit absoluten Pfaden habe ich wohl ein Fehler gemacht, mich dann aber wieder auf relative Pfade konzentriert. An die 98% aller Tests drehten sich bei mir um relative Pfade. Und relative Pfade sind nicht möglich.

Sorry, Problem gelöst.

himitsu 24. Jun 2023 01:54

AW: Bei Rar.exe Kommandozeile, einen Ordner bei Archivierung ausschließen
 
Relative geht bestimmt auch,
wenn du sowohl das Exclude, als auch das Include relativ machst.


Außerdem ist relativ nicht gleich relativ,
denn es kommt drauf an relativ zu was es ist.

\Logs ist absolut, zum aktuellen Laufwerk, also C:\Logs
Oder anders gesagt, es ist relativ zum aktuellen Laufwerk, nicht relativ zum aktuellen Verzeichnis.
Wenn, dann meinst du bestimmt Logs oder .\Logs


oder mal ein paar andere Varianten ausprobieren
Rar.exe a Test.rar -x"Logs" "C:\Temp"
cd /d C:\Temp & Rar.exe a Test.rar -x".\Logs" "."
cd /d C:\Temp & Rar.exe a Test.rar -x"Logs" *
...


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