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 :

Parcourir une liste dans un autre fichier [Batch]


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Parcourir une liste dans un autre fichier
    Bonjour,
    Je souhaite créer une solution de sauvegarde pour certains fichiers (une liste de fichiers).
    Pour cela j'ai écrit ce code :

    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
    rem ******************************************************
    title sauvegarde
    rem ###nom du dossier de sauvegarde###
    set dossierarchive=archive_critical_files
    set cheminacces=L:\documentation\exterieur
    rem ******************************************************
    rem ###on verifie l'existence du fichier###
    if exist C:\%dossierarchive% goto suite
    MD C:\%dossierarchive%
    goto suite
    
    :suite
    rem ###on execute la copie###
    XCOPY "%cheminacces%" C:\%dossierarchive% /D /S /Y
    
    pause
    Je voudrais que la variable "dossierarchive" prenne plusieurs valeurs afin de sauvegarder des dossiers ou des fichiers du type:
    L:\documentation\exterieur
    L:\documentation\interieur
    L:\presentation\diaporama.ppt
    etc

    Je ne connais pas encore toutes les possibilités de programmation sous DOS. Je pensais peut-être inscrire toutes les valeurs que doit prendre "dossierarchive" dans un autre fichier (en .txt ?) et ensuite le parcourir. Nommons le "listing.txt" Comment faire pour le parcourir?

    J'ai trouvé "for /f " mais j'avoue être un peu perdu, j'ai plus l'habitude du vba.
    J'avais pensé faire une boucle "tant que" mais je ne sais pas comment parcourir une liste.

    Merci pour votre aide.

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Finalement, j'ai trouvé ça :
    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
    rem ******************************************************
    title sauvegarde
    rem ###nom du dossier de sauvegarde###
    set dossierarchive=archive_critical_files
    
    rem ******************************************************
    
    rem ###on verifie l'existence du fichier###
    if exist C:\%dossierarchive% goto suite
    MD C:\%dossierarchive%
    goto suite
    
    :suite
    rem ###on execute la copie###
    
    for /f %%X IN ('TYPE C:\listing.txt') do XCOPY %%X C:\%dossierarchive% /D /S /Y
    
    pause
    et dans le fichier listing.txt, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    L:\documentation\exterieur
    L:\documentation\interieur
    L:\presentation\diaporama.ppt
    Mais ca ne fonctionne pas si je rajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L:\presentation\diaporama de presentation.ppt
    C'est un chemin avec des espaces, comment faire ?

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par jepasderemy Voir le message
    C'est un chemin avec des espaces, comment faire ?

    Comment gérer les espaces dans les noms de fichiers et répertoires ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Oui, mais non...

    si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f %%X IN ('TYPE C:\listing.txt') do XCOPY "%%X" C:\%dossierarchive% /D /S /Y
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f %"%X" IN ('TYPE C:\listing.txt') do XCOPY %%X C:\%dossierarchive% /D /S /Y
    Ca ne passe pas.
    Je crois que le problème vient du fait %%X ne prends pas toute la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L:\presentation\diaporama de presentation.ppt
    dans le fichier listing.
    J'ai aussi testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "L:\presentation\diaporama de presentation.ppt"
    dans le fichier listing, mais j'aimerais autant ne pas devoir mettre de " dans ce fichier, et de toute façon ça ne fonctionne pas non plus.
    Y-a-t-il un autre moyen que de mettre des " ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    alors 2 choses pour résoudre le problème ajouter des " à %%X dans la ligne XCOPY et "delims=" dans le for:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "delims=" %%X IN ('TYPE C:\listing.txt') do XCOPY "%%X" C:\%dossierarchive% /D /S /Y
    Problème résolu : maintenant ça prends les chemins avec des espaces situés dans un autre fichier.

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Yep, tu as trouvé. Si tu génères le fichier listing toi-même, via un batch, il est toujours conseillé de mettre des guillemets autour quoi qu'il arrive.

    A la lecture, le "truc" est effectivement un modificateur du genre "tokens=* delims=" de façon à ne pas s'arrêter à chaque espace (mode par défaut).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

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

Discussions similaires

  1. [VBA Excel] Copie d'une feuille dans un autre fichier
    Par nattyman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2006, 10h35
  2. Réponses: 17
    Dernier message: 12/07/2006, 22h04
  3. Utilisation d'une classe dans un autre fichier
    Par melotron dans le forum Général Python
    Réponses: 1
    Dernier message: 09/07/2006, 13h11
  4. [VBA] Recherche d'une valeur dans un autre fichiers puis
    Par Nicos77 dans le forum Général VBA
    Réponses: 11
    Dernier message: 24/03/2006, 11h24
  5. Shell - Récupérer une variable dans un autre fichier
    Par claralavraie dans le forum Linux
    Réponses: 9
    Dernier message: 11/01/2006, 16h25

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