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 :

Exécuter une commande sur un ensemble de fichiers


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Exécuter une commande sur un ensemble de fichiers
    Bonjour,

    Je dois faire un script batch qui liste tous les fichiers en .sql contenus dans un répertoire, puis lance la commande sqlcmd sur chacun de ces fichiers.
    Je n'ai encore jamais écrit de .bat (comme quoi tout arrive après 12 ans d'expérience... sur Unix)

    J'ai cherché pas mal, lu quelques tutoriels, mais je ne trouve pas comment récupérer la liste des fichiers dans une variable de type liste, puis exécuter sqlcmd sur chacun des éléments de la liste.

    Je pourrai aussi mettre le résultat dans un fichier :

    D:\tmp>dir *.sql /B > liste_sql.txt

    mais je retombe sur le même problème : comment mettre le résultat de la lecture du fichier dans une variable et exécuter sqlcmd sur chacun des éléments.

  2. #2
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    "mais je ne trouve pas comment récupérer la liste des fichiers dans une variable de type liste, puis exécuter sqlcmd sur chacun des éléments de la liste."

    Une variable de type liste, en batch ? Ca n'existe pas.

    Ce que tu peux faire, c'est utiliser for pour parser ton fichier et traiter ainsi chaque ligne :

    for /f "delims=" %%i in (Ton fichier) do (
    set MaVarATraiter=%%i
    echo %MaVarATraiter%
    )

    Attention, ne pas oublier d'utiliser des variables de type delayedexpansion dans for (i.e. avec des ! au lieu des %), voir la commande setlocal pour cela, sinon les variables ne sont pas résolue dans la boucle for, faut le savoir.

  3. #3
    Expert éminent
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Points : 6 800
    Points
    6 800
    Par défaut
    Tu as des explication sur la commande For ici : http://windows.developpez.com/cours/...=page_26#LXXVI
    Maitrisez toutes les subtilités de Windows 8 en lisant la FAQ Windows 8. N'hésitez pas à proposer vos Q/R.
    _ _ _
    Découvrez toutes les facettes de Windows 7 et maitrisez toutes ses fonctionnalités grâce au livre Windows 7 Avancé

Discussions similaires

  1. Répéter une commande sur un ensemble de fichiers
    Par sohoney dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 11/01/2013, 10h55
  2. Exécuter une commande sur Terminal
    Par riadh8 dans le forum Linux
    Réponses: 2
    Dernier message: 28/05/2009, 19h13
  3. exécuter une commande sur tous les fichiers des sous dossiers
    Par Concombre Masqué dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 05/03/2009, 01h15
  4. Réponses: 1
    Dernier message: 25/04/2008, 11h52
  5. Réponses: 5
    Dernier message: 13/07/2007, 15h13

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