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 :

commande (7-zip) qui ne marche pas dans boucle FOR


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 1
    Par défaut commande (7-zip) qui ne marche pas dans boucle FOR
    Bonjour,

    Je m'arrache les cheveux !
    Voici le contexte de mon problème : j'ai récupéré des données dans un répertoire qui contient : 381 sous répertoires de noms com-001, com-002, etc,
    eux-mêmes contenant N (quantité variable) sous répertoires contenant chacun 1 archive *.tar.bz2.
    Je voudrais récupérer les fichiers décompressés dans chacun des sous-répertoires com-... mais pas dans les sous-sous-répertoires ni dans le répertoire principal (pour les traitements suivants).

    Avec 7-zip en ligne de commande, j'ai essayé de faire le batch suivant :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    :: expansion retardée pour utilisation variable dans boucle
    setlocal EnableDelayedExpansion
     
    :: : définition du répertoire de données source
    SET chemin=%1
     
    :: boucle sur les sous-répertoires 
    for /d %%F in (%chemin%\*) do (
    	cd %%F
    	echo %%F >> %chemin%\mouchard.txt
    	"C:\Program Files\7-Zip\7z.exe" e -an -air!*.tar.bz2 -aoa
    	"C:\Program Files\7-Zip\7z.exe" e *.tar -aoa 
    )

    Ca ne marche pas :
    lors du premier appel de 7z.exe, j'ai une Error : Incorrect command line

    Alors que le batch suivant fonctionne très bien (en fait, je l'ai essayé avant) :
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    :: : définition du répertoire de données source
    SET chemin=%1
     
    cd %chemin%\com-001
    "C:\Program Files\7-Zip\7z.exe" e -an -air!*.tar.bz2 -aoa
    "C:\Program Files\7-Zip\7z.exe" e *.tar -aoa 
     
    cd %chemin%\com-002
    "C:\Program Files\7-Zip\7z.exe" e -an -air!*.tar.bz2 -aoa
    "C:\Program Files\7-Zip\7z.exe" e *.tar -aoa

    Je ne comprends pas : mon fichier mouchard me montre bien que je passe dans les bons répertoires, et je ne vois pas la différence entre les 2 batch.

    Depuis le temps que je creuse, j'aurais pu rédiger un fichier comme l'exemple 2 pour mes 381 répertoires, mais j'aimerais bien comprendre...
    Merci d'avance à ceux qui m'éclairerons !

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Ton problème est dû au fait que tu fais um CD dans la boucle FOR
    et ensuite tu ne recule pas d'un répertoire.

    Pourquoi ne pas utiliser directement %%F :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
     
    SET chemin=%1
     
     
    for /d %%F in (%chemin%\*) do (
    	"C:\Program Files\7-Zip\7z.exe" e -an -air!"%%F"\*.tar.bz2 -aoa
    	"C:\Program Files\7-Zip\7z.exe" e "%%F"\*.tar -aoa 
    )

    Voici l'idée, je n'ai pas testé. Donc à adapter à ta comande.

    Ou sinon avec pushd/popd

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    :: : définition du répertoire de données source
    SET chemin=%1
     
    :: boucle sur les sous-répertoires 
    for /d %%F in (%chemin%\*) do (
    	pushd %%F
    	echo %%F >> %chemin%\mouchard.txt
    	"C:\Program Files\7-Zip\7z.exe" e -an -air!*.tar.bz2 -aoa
    	"C:\Program Files\7-Zip\7z.exe" e *.tar -aoa
            popd
    )


Discussions similaires

  1. [AIDE] Commande wscript.stdout. qui ne marche pas.
    Par hcmskins dans le forum VBScript
    Réponses: 1
    Dernier message: 27/04/2008, 17h47
  2. [Système] Commande system qui ne marche pas
    Par marie59 dans le forum Langage
    Réponses: 7
    Dernier message: 16/05/2007, 17h40
  3. Commande ftp sur free qui ne marche pas!
    Par Death83 dans le forum Administration
    Réponses: 1
    Dernier message: 07/11/2006, 18h08
  4. Select qui marche pas dans variable
    Par sawyer20 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/08/2006, 15h06
  5. requête dans acces qui ne marche pas...
    Par sam01 dans le forum Access
    Réponses: 3
    Dernier message: 14/12/2005, 16h48

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