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 :

Zipper une liste de répertoires dans des archives différentes [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Par défaut Zipper une liste de répertoires dans des archives différentes
    Bonjour,

    J'ai un petit souci car j'aimerai pourvoir zipper via un script (à mon avis) une liste de répertoire fournie via un fichier en entrée mais je ne sais pas du tout comment m'y prendre.
    Il faudrait j'imagine utiliser en ligne de commande Izarc qui est installé sous windows.
    Pouvez-vous m'aider à mettre au point ce script ?

    ça ressemblerait j’imagine à un truc du genre:

    IZarcc.exe input=liste_repertoire.csv output=(liste_repertoire - nom du répertoire à zipper / ou un autre chemin unique pour déposer toutes les archives) + options comme mot de passe si besoin / auto extractible / ou encore extension (.zip; .rar ...)


    La liste serait du type :

    \\serveur\TD\AA\XMLA
    \\serveur\TD\AA\XMLB
    \\serveur\TD\AA\XMLC
    \\serveur\TD\AB\XMLD
    \\serveur\TD\AB\XMLE

    ou les dossiers XMLA, XMLB, XMLC, XMLD, XMLE devraient être archivés chaucun dans un "zip" dédié et placés soit sous AA, AB ou mon_lecteur:\toto (ou \\serveur2\toto).

    Par avance merci pour votre aide.


    p.s. ça pourrait être autre chose comme un script sous mobaxterm ou encore autre chose ....

  2. #2
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Salut,
    Si j'ai bien compris:
    Le contenu de \\serveur\TD\AA\XMLA doit être zippé dans un XMLA.zip qui se trouve dans \\serveur\TD\AA\ et ainsi de suite?

    Cela n'est pas compliqué à faire mais j'ai une petite question, est-on obligés d'utiliser "IZarcc"?
    Car hier j'ai fais ce script (http://www.developpez.net/forums/d15...e/#post8509685) avec 7Zip.
    Je préfère 7Zip car il suffit d'appeler le 7z.exe, pas besoin de l'installer ou autres (entre autres choses).

  3. #3
    Membre confirmé Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Par défaut
    Bonsoir devilsnake88

    Si j'ai bien compris:
    Le contenu de \\serveur\TD\AA\XMLA doit être zippé dans un XMLA.zip qui se trouve dans \\serveur\TD\AA\ et ainsi de suite?
    Oui c'est ça
    Non non vous avez raison, je pense que je dois pouvoir utiliser 7zip.
    On ne peut pas installer tous ce que l'on veut sur n'importe quelle machine mais placer le fichier exe + le batch cela devrait être bon.

    Par contre il me faut utiliser un fichier d'entrée car là où les répertoires sont à zipper, il existe bien d'autres répertoires qu'ils ne faut pas prendre en compte.
    D'où le fichier d'entrée.

    Du coup dans le script, comment utiliser un tel fichier?

    Par contre je n'ai que 7za.exe et non pas 7z.exe ...

    A partir du code de devilsnake88:
    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
    @echo off & cls
    setlocal EnableDelayedExpansion
    
    set current_path=%~dp0
    set current_path_modified=%current_path:~0,-1%
    set "TempDir=%systemdrive%\Temp"
    set "FinalDir=%systemdrive%\Final"
    
    if not exist "%current_path_modified%\7za.exe" (
        echo 7za.exe est introuvable dans %current_path_modified%
        echo Extinction du script dans 10 secondes.
        timeout 10
        exit
    )
    if not exist "!TempDir!" md "!TempDir!"
    if not exist "!FinalDir!" md "!FinalDir!"
    
    for /F "delims=" %%I in ('dir /b *.7z') do (
        set "Current7zFileName=%%~nI"
        set "Current7zFileExtension=%%~xI"
        set "Current7zFullName=!Current7zFileName!!Current7zFileExtension!"
        echo Fichier en cours de traitement: !Current7zFileName!
        echo Extraction de !Current7zFullName! dans !TempDir!
        7z e !Current7zFullName! -o!TempDir! * -r
        for /F "delims=" %%J in ('dir /b !TempDir!\*.cue') do (
            echo Renommage de %%J en !Current7zFileName!%%~xJ
            move "!TempDir!\%%J" "!TempDir!\!Current7zFileName!%%~xJ"
        )
        echo On cree l'archive !Current7zFileName!.7z et on la deplace dans !FinalDir!
        7z a -t7z "!TempDir!\!Current7zFileName!.7z" "!TempDir!\*"
        move "!TempDir!\!Current7zFileName!.7z" "!FinalDir!"
        echo On nettoie le dossier temporaire
        rd /S /Q "!TempDir!"
    )
    
    pause
    exit

  4. #4
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Salut,
    Essaye ceci:
    Code bat : 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
    @echo off & cls
    setlocal EnableDelayedExpansion
     
    set current_path=%~dp0
    set current_path_modified=%current_path:~0,-1%
     
    if not exist "%current_path_modified%\7z.exe" (
        echo 7z.exe est introuvable dans %current_path_modified%
        echo Extinction du script dans 10 secondes.
        timeout 10
        exit
    )
     
    for /f "delims=" %%Z in (%current_path_modified%\liste.txt) do (
        set "ListeLine=%%Z"
        echo En cours de traitement: !ListeLine!
        for /F "tokens=1-5 delims=\" %%A in ('echo !ListeLine!') do (
            7z a -tzip "\\%%A\%%B\%%C\%%D.zip" "\\%%A\%%B\%%C\%%D\*"
        )
    )
     
    pause
    exit

  5. #5
    Membre confirmé Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Par défaut
    Bonjour devisnake88

    oui c'est cela que j'espérais, merci beaucoup.
    Par contre j'ai essayé de l'adapté pour pouvoir créer un répertoire Output pour y déposer les archives mais sans succès.

    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
    @echo off & cls
    setlocal EnableDelayedExpansion
    
    set current_path=%~dp0
    @echo off & cls
    setlocal EnableDelayedExpansion
    
    set current_path=%~dp0
    set current_path_modified=%current_path:~0,-1%
    
    md Output
    
    if not exist "%current_path_modified%\7za.exe" (
        echo 7za.exe est introuvable dans %current_path_modified%
        echo Extinction du script dans 10 secondes.
        timeout 10
        exit
    )
    
    for /f "delims=" %%Z in (%current_path_modified%\liste.txt) do (
        set "ListeLine=%%Z"
        echo En cours de traitement: !ListeLine!
        for /F "tokens=1-5 delims=\" %%A in ('echo !ListeLine!') do (
            7za a -tzip "%%A\%%B\%%C\%%D.zip" "%current_path_modified%\Output"
        )
    )
    
    pause
    exit
    sachant que le répertoire Output pourrait très bien se trouver sous un autre serveur:
    exemple: md \\serveur2\Toto\Output
    ou un autre disque:
    exemple: md E:\Toto\Output

    en attendant cela fonctionne en déposant les zip là ou se trouve le batch
    Mais si vous pouvez m'aider à aller plus loin ce serait très sympa (comme ça a été déjà le cas )

  6. #6
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Code bat : 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
    @echo off & cls
    setlocal EnableDelayedExpansion
     
    set current_path=%~dp0
    set current_path_modified=%current_path:~0,-1%
    set "Output=E:\Toto\Output"
    if not exist "%current_path_modified%\7z.exe" (
        echo 7z.exe est introuvable dans %current_path_modified%
        echo Extinction du script dans 10 secondes.
        timeout 10
        exit
    ) else (
        if not exist "!Ouput!" md "!Ouput!"
        for /f "delims=" %%Z in (%current_path_modified%\liste.txt) do (
            set "ListeLine=%%Z"
            echo En cours de traitement: !ListeLine!
            for /F "tokens=1-5 delims=\" %%A in ('echo !ListeLine!') do (
                7z a -tzip "!Ouput!\%%D.zip" "\\%%A\%%B\%%C\%%D\*"
            )
        )
    )
    pause
    exit
    (Pas testé donc attention...)

    Petite information:
    Tu définis où tu créés ton .ZIP directement dans la commande de 7zip (3ème argument comme tu peux le voir ci-dessus avec "!Ouput!\%%D.zip").
    En français "7z a -tzip "!Ouput!\%%D.zip" "\\%%A\%%B\%%C\%%D\*"" -> 7z.exe tu me compresses en ZIP le contenu de "\\%%A\%%B\%%C\%%D\" dans un fichier du nom de "%%D.zip" que tu placeras dans "!Ouput!\"

  7. #7
    Membre confirmé Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Par défaut
    Bonsoir devilsnake88

    Merci enore une fois pour ton aide.
    cependant, je n'arrive pas à faire marcher le batch.

    Batch:
    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
    @echo off & cls
    setlocal EnableDelayedExpansion
    
    set current_path=%~dp0
    set current_path_modified=%current_path:~0,-1%
    set "Output=E:\Toto\Output"
    if not exist "%current_path_modified%\7za.exe" (
        echo 7za.exe est introuvable dans %current_path_modified%
        echo Extinction du script dans 10 secondes.
        timeout 10
        exit
    ) else (
        if not exist "!Ouput!" md "!Ouput!"
        for /f "delims=" %%Z in (%current_path_modified%\liste.txt) do (
            set "ListeLine=%%Z"
            echo En cours de traitement: !ListeLine!
            for /F "tokens=1-5 delims=\" %%A in ('echo !ListeLine!') do (
                7za a -tzip "!Ouput!\%%D.zip" "\\%%A\%%B\%%C\%%D\*"
            )
        )
    )
    pause
    exit
    Liste.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    192.168.1.11\000 - TOTO pilo\Formation
    Qu'est-ce qui ne fonctionne pas?


    Voilà ce que j'ai:

    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
    La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.
    En cours de traitement: 192.168.1.11\000 - TOTO pilo\Formation
    
    7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
    
    Scanning
    
    
    \\192.168.1.11\000 - TOTO pilo\Formation\\:  WARNING: Nom de réseau introuva
    ble.
    
    
    
    Updating archive \.zip
    
    
    
    WARNINGS for files:
    
    \\192.168.1.11\000 - TOTO pilo\Formation\\ : Nom de réseau introuvable.
    
    ----------------
    WARNING: Cannot find 1 file
    Appuyez sur une touche pour continuer...

  8. #8
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Code bat : 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
    @echo off & cls
    setlocal EnableDelayedExpansion
     
    set current_path=%~dp0
    set current_path_modified=%current_path:~0,-1%
    set "Output=E:\Toto\Output"
    if not exist "%current_path_modified%\7z.exe" (
        echo 7za.exe est introuvable dans %current_path_modified%
        echo Extinction du script dans 10 secondes.
        timeout 10
        exit
    ) else (
        if not exist "!Ouput!" md "!Ouput!"
        for /f "tokens=* delims=" %%Z in (%current_path_modified%\liste.txt) do (
            set "ListeLine=%%Z"
            echo En cours de traitement: !ListeLine!
            for /F "tokens=1-5 delims=\" %%A in ('echo !ListeLine!') do (
                7z a -tzip "!Output!\%%D.zip" "\\%%A\%%B\%%C\%%D\*"
            )
        )
    )
    pause
    exit

    \\192.168.1.11\000 - TOTO pilo\Formation

  9. #9
    Membre confirmé Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Par défaut
    Merci encore une fois.
    En fait j'arrive presque à le faire fonctionner si je mappe mon serveur sur un lecteur et que je supprime \\ dans le code avec un petit bémol:
    le fichier s'appelle .zip et non pas Formation.zip

    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
    @echo off & cls
    setlocal EnableDelayedExpansion
     
    set current_path=%~dp0
    set current_path_modified=%current_path:~0,-1%
    set "Output=.\Output"
    if not exist "%current_path_modified%\7zg.exe" (
        echo 7zg.exe est introuvable dans %current_path_modified%
        echo Extinction du script dans 10 secondes.
        timeout 10
        exit
    ) else (
        if not exist "!Ouput!" md "!Ouput!"
        for /f "tokens=* delims=" %%Z in (%current_path_modified%\liste.txt) do (
            set "ListeLine=%%Z"
            echo En cours de traitement: !ListeLine!
            for /F "tokens=1-5 delims=\" %%A in ('echo !ListeLine!') do (
                7zg a -tzip "!Output!\%%D.zip" "%%A\%%B\%%C\%%D\*"
            )
        )
    )
    pause
    exit
    et si je conserve \\ et que j'utilise le chemin complet du serveur, windows m'indique que le chemin n’existe pas et un fichier .zip vide est créé.

    Je ne vois pas comment faire pour pouvoir prendre dans ma liste aussi bien des adresses de serveurs que des lecteurs.
    et je ne vois pas non plus pourquoi maintenant le nom du fichier zip n'est pas correct ...

  10. #10
    Membre confirmé Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Par défaut
    Bonjour Devilsnake88

    Qu'en penses-tu?

    Je n'arrive toujours pas à le faire fonctionner correctement ...
    Mais je m.... où?


  11. #11
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Donne moi ta vraie liste finale (en MP si tu préfères) parce que chez moi ça a fonctionné avant que je t'envoie le code...
    Et donne aussi ce que le CMD te retourne exactement (copier/coller ou screenshot).

  12. #12
    Membre confirmé Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Par défaut
    Bonsoir devilsnake88
    voici la liste final de test.
    liste.txt

    voici le message de la console
    Nom : Cwindowssystem32cmd.exe.jpg
Affichages : 2870
Taille : 25,2 Ko

    Et voici le résultat:
    Nom : IZArc - CTemptestOutput.zip.jpg
Affichages : 2857
Taille : 99,4 Ko

    Je ne comprends pas pourquoi cela fait ça.
    et si je mets "\\192.168.1.11\001 - HD network" dans la liste voici ce que j'ai.
    Nom : 0% Compressing .Output.zip.jpg
Affichages : 2906
Taille : 60,4 Ko

    Si tu as des réponses ... merci d'avances

  13. #13
    Membre confirmé Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Par défaut
    Merci encore pour tout Devilsnake88.
    Bonne journée à tout le monde.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/09/2013, 13h56
  2. Réponses: 1
    Dernier message: 30/04/2013, 21h33
  3. [CLI] Comparer 2 répertoires dans des versions différentes
    Par Empty_body dans le forum CVS
    Réponses: 1
    Dernier message: 24/11/2008, 13h55
  4. Réponses: 1
    Dernier message: 24/02/2007, 12h53
  5. Réponses: 4
    Dernier message: 24/11/2005, 09h11

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