Utilisation de Winrar en ligne de commande

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Utilisation de Winrar en ligne de commande

Message par Le Soldat Inconnu »

Salut,

un petit truc pour utiliser Winrar en ligne de commande, ça peut ête utile si vous voulez automatiser des opérations de compression avec PB.

cet exemple compresse en zip, mais c'est pareil pour le rar

Code : Tout sélectionner

Procedure.s GetProgramDirectory() ; Récupère le dossier d'exécution
  Protected Dossier.s
  Dossier = Space(255)
  GetCurrentDirectory_(255, @Dossier)
  If Right(Dossier, 1) <> "\" ; si l'adresse ne finit pas par "\"
    Dossier = Dossier + "\" ; on rajoute le "\"
  EndIf
  ProcedureReturn Dossier
EndProcedure

; On choisi le nom du zip
Zip.s = "Truc.Zip"
Zip = ReplaceString(Zip, " ", "_") ; je remplace les espaces par des "_" car c'est pour faire un fichier téléchargeables sur le net

; Ici, on crée la liste de fichier à zipper
If CreateFile(0, "zip.txt")
  ; on ajoute le nom des fichiers ou dossiers, tout est en relatif par rapport au dossier d'exécution de WinRar
  WriteStringN("Setup.exe")
  WriteStringN("Setup.ini")
  WriteStringN("Setup\*.*") ; pour les dossiers, on peut mettre un filtre. les dossiers vides ne seront pas ajoutés.
  CloseFile(0)
EndIf


If FileSize(Zip) >= 0 ; On supprime l'archive existante, car sinon, winrar ajoute les nouveaux fichiers sans enlever les anciens
  DeleteFile(Zip)
EndIf

RunProgram("C:\Program Files\WinRAR\WinRar.exe", "a -r -m5 " + Zip + " @zip.txt", GetProgramDirectory(), 1)

; Signification des paramètres
; a : ajout de fichier
; -r : ajout récursif pour les dossiers
; -m5 : meilleur taux de compression
; Zip : Nom du fichier zip a créé
; @Zip.txt : Fichier contenant la liste de fichier à zipper

; On supprime la liste de fichiers à zipper
DeleteFile("zip.txt")
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

Pas mal LSI ;)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

merci monsieur :roll:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Eroan
Messages : 2
Inscription : jeu. 09/févr./2006 13:39

Message par Eroan »

Je te remercie pour ce code très bien fait. Il y a cependant des modifs à faire pour qu'il fonctionne, et en plus c'est moins restrictif :

Code : Tout sélectionner

DeleteFile("archive.zip")

Protected Dossier.s
Dossier = Space(255)
GetCurrentDirectory_(255, @Dossier)
If Right(Dossier, 1) <> "\" ; si l'adresse ne finit pas par "\"
Dossier = Dossier + "\" ; on rajoute le "\"
EndIf

fileinfo$ = "archive/"
If RunProgram("WinRAR.exe", "a -r -m5 archive.zip "+fileinfo$, Dossier, 1) ; on crée l'archive nommée archive.zip à partir du répertoire archive/
DeleteDirectory("archive", "*.*") ; puis on supprime le répertoire archive/

MessageRequester("Archive générée", "Le fichier archive.zip a été créé avec succès")

Else

MessageRequester("Erreur WinRAR", "Vous devez installer le logiciel WinRAR sur votre PC afin de générer l'archive. Il est disponible sur le site web 3w.telecharger.com!")
EndIf
Ca fait super pro la petite fenêtre WinRAR qui s'ouvre pour compresser ;)
--------------------------------------------
Webmaster de www.scooter-system.fr
Mon 1er logiciel : http://www.scooter-system.fr/download/r ... php?id=120
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Au fait, maintenant PB4 a la commande 'GetCurrentDirectory()'
:wink:
Image
Eroan
Messages : 2
Inscription : jeu. 09/févr./2006 13:39

Message par Eroan »

Ouais mais moi j'en suis à la version PureBasic v3.94 (Windows - x86) PTDR :P
--------------------------------------------
Webmaster de www.scooter-system.fr
Mon 1er logiciel : http://www.scooter-system.fr/download/r ... php?id=120
Répondre