IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

7zipper en fonction de critères [Batch]


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut 7zipper en fonction de critères
    Bonjour à tous,

    Pour ce 1er post, je vous soumets ma problématique pour la création d'un batch de compression de fichiers.

    Dans un dossier, j'ai des fichiers types .txt dont le nom est la date : 20110101.txt (YYYYMMDD.txt), 20110125.txt, 20110203.txt, etc.
    Je voudrais planifier une tâche tous les 15 du mois pour archiver dans un seul fichier 7zip tous les fichiers du mois précédent au format YYYYMM.7z ! Sachant qu'il existe autant de fichiers qu'il y a de jours ouvrés.

    Exemple : le 15 février, 7zipper tous les fichiers .txt du mois de janvier.

    Comment exprimer pour zipper tous les fichiers du mois précédent ?
    Avez-vous des propositions de code ?

    En espérant être clair

    Merci par avance pour votre aide !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 69
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=2 delims=/" %d in ('date /t') do (set /a mois=%d-1)
    récupère jj/mm/aaaa pour extraire mm et le décrémenter.
    Attention, janvier devient 00.

    Pour tes tests sur les fichiers, faudrait décomposer le nom du fichier à partir du point.
    Où année = %nom:~0,4%
    mois = %nom:~4,2%
    jours = %nom:~6,2%

    De là tu regardes la commande 7z pour voir les paramètres disponible afin d'ajouter le fichier.

  3. #3
    Membre confirmé Avatar de fabrice.s
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Par défaut
    Salut,

    moi je me contenterai de faire comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    set chemin=c:\archives
    rem Donne à y la valeur de l'année en cours
    set y=%date:6,4%
    rem Donne à m la valeur du mois en cours
    set m=%date:3,2%
    rem Donne à m la valeur du mois précédent
    set /a m=%m%-1
    rem Si m=0 (janvier - 1) Attribut la valeur 12 à m ( Décembre )
    if %m%==0 (
    set m=12
    rem Puisque m=12 Attribut à y la valeur de l'année passée
    set /a y=%y%-1
    )
    rem archive avec 7Zip au format .zip dans le fichier %y%%m%.zip tout les fichier *.txt commençant par %y%%m% (201111**.txt par exemple)
    rem -mx9 active la compression ultra
    7z a -tzip %chemin%%y%%m%.zip %y%%m%**.txt -mx9

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut
    Merci pour vos réponses,

    La solution de fabrice.s fonctionne en partie, l'archive est bien créée mais elle ne contient aucun fichier...

    Une idée pour solutionner ce point ?

    Merci !

  5. #5
    Invité de passage
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mars 2012
    Messages : 1
    Par défaut
    Bonsoir,

    je pense qu'il a 2 problèmes
    - le mois passe sur 1 caractère si on soustrait
    - dans une parenthèse pas plus d'un set est pris en compte
    (je crois)

    J'ai donc repris le travail pour arrivé à çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    @echo off
    cls
    echo.
    echo       Archivage du mois precedent
    echo.
    rem    Recuperation de la date
    rem    -----------------------
    rem Récupération de la periode actuelle
    set mm=%date:~3,2%
    set aaaa=%date:~6,4%
    set Periode=%aaaa%%mm%
    
    rem  Donne à mm la valeur du mois précédent
    set /a mm=%mm%-1
    rem Si mm=0 (janvier - 1) Attribut la valeur 12 à mm ( Décembre )
    
    if %mm%==0 goto Decembre
    goto PasDecembre
    
    :Decembre
    set mm=12
    rem     Si mois de Decembre il remonter d'une annee
    set /a aaaa=%aaaa%-1
    set Periode=%aaaa%%mm%
    echo %periode%
    goto Compacte
    
    :PasDecembre
    if %mm%==10 (
    set Periode=%aaaa%%mm%
    echo %Periode%
    goto Compacte )
    
    if %mm%==11 (
    set Periode=%aaaa%%mm%
    echo %Periode%
    goto Compacte )
    
    set Periode=%aaaa%0%mm%
    echo %Periode%
    goto Compacte
    
    :Compacte
    rem    Archivage
    rem    ---------
    rem  Archive avec 7-Zip dans le fichier %aaaa%%mm% tous les fichiers *.txt 
    rem  commençant par %aaaa%%mm% (201111*.txt par exemple)
    
    if not exist "%Periode%??.txt" goto PasFichier
    "C:\Program Files\7-Zip\7z.exe" a -mx9 "%Periode%" "%Periode%*.txt"
    goto fin
    
    :PasFichier
    color cf
    echo.
    echo Pour "%Periode%" pas de fichiers .txt a archiver !
    echo.
    pause
    goto Fin
    Cordialement

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut
    Bonjour Valoup,

    Merci beaucoup, cela fonctionne parfaitement !

    J'ai juste adapter pour obtenir un fichier de log et supprimer les fichiers archivés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    :Supprimer
    rem    Suppression des fichiers archivés
    del "%PathFile%%Periode%*.SRV"
    goto Fin
    Encore merci !

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créations de variables en fonction de critères
    Par MDsas dans le forum SAS Base
    Réponses: 6
    Dernier message: 04/06/2008, 14h24
  2. regroupement en fonction de critères
    Par hota02 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/12/2007, 15h44
  3. [SQL] Création automatique en fonction de critères
    Par lylandra6 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/05/2007, 23h09
  4. Afficher un état en fonction de critères
    Par TNC dans le forum Access
    Réponses: 2
    Dernier message: 04/08/2006, 16h40
  5. Requete en fonction de critère "date"
    Par b747fred dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 03/08/2006, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo