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 :

Copie problèmatique avec la commande xcopy


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Points : 67
    Points
    67
    Par défaut Copie problèmatique avec la commande xcopy
    décidémment le MS-DOS c'est une invention de fou !

    Sur mon bureau :
    - un dossier "test" avec dedans : un fichier "balls (Vista).bmp", un autre "JOUER !.lnk" et un dernier "PLAY.lnk".

    La variable "%#exclude%" pointe vers un fichier d'exclusion dans lequel se trouve une ligne :
    C:\Documents and Settings\*****\Bureau\test\JOUER !.lnk

    Problème : le code ci-dessous ne copie rien (0 fichiers copiés), et en plus se permet de me demander si "[...]\test2" est un nom de fichier ou de répertoire, alors que j'ai mis "/i" comme paramètre à xcopy !!!

    MAIS BON SANG DE BONSOIR ! c'est quoi le problème avec ce langage? Sérieusement??


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        set rep=C:\Documents and Settings\*****\Bureau\test
        set dest=C:\Documents and Settings\*****\Bureau\test2
        for /f "delims=" %%e in ('dir /b /s /a:-d "%rep%"') do set source=%%e & call :cop2
        pause
        :cop2
        echo COPIE EN COURS : %source%
        xcopy "%source%" "%dest%" /s /e /q /k /r /y /c /i /exclude:%#exclude%
        goto :eof
    Comme je me suis dit "bon, %dest% ne contient pas le nom du fichier", j'ai essayé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        for /f "delims=" %%e in ('dir /b /s /a:-d "%rep%"') do set source=%%e & call :cop
        pause
        :cop
        call :cop2 "%source%"
        :cop2
        echo COPIE EN COURS : %source%
        xcopy "%source%" "%dest%\%~nx1" /s /e /q /k /r /y /c /i /exclude:%#exclude%
        goto :eof
    Mais ça marche pas non-plus !

  2. #2
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    pas tester mais essyes comme ceci:

    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
    REM On va créer un fichier exclude.tmp qui va contenir nos
    REM chemins à exclure
    set #exclude=exclude.tmp
    REM à la fin de chaque chemin tu dois mettre un "\"
    set rep=C:\Documents and Settings\*****\Bureau\test\
    set dest=C:\Documents and Settings\*****\Bureau\test2\
    for /f "delims=" %%e in ('dir /b /s /a:-d "%rep%"') do set "source=%%e" & call :cop2
    pause
    REM End-Of-File
    goto:EOF 
    :cop2
    echo COPIE EN COURS : %source%
    xcopy "%source%" "%dest%" /s /e /q /k /r /y /c /exclude:%#exclude%
    goto :eof
    le fichier exclude.tmp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    \Bureau\test\JOUER !.lnk
    EDIT 1: ici tu n'a pas besoin du commutateur /i parceque tu copie chaque fichier à part.
    EDIT 2: si tu es sous VISTA je crois qu'il y a aussi ROBOCOPY.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Points : 67
    Points
    67
    Par défaut
    - Ca marche aussi avec les noms longs dans "exclude.txt" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Documents and Settings\Administrateur\Bureau\test\JOUER !.lnk
    - Pas d'anti-slash tout à la fin du chemin à parcourir avec 'dir' ne pose pas de problème.

    - Et si on ne met pas d'anti-slash à la fin du nom de destination, ça demande "est-ce un fichier ou un répertoire", et puis ça fonctionne. Donc je vais mettre un anti-slash ^^

    Après m'être demandé "mais... qu'est-ce qu'il y a de différent entre mon code et celui de IM_HERE", j'ai enfin trouvé

    - Ce qui change c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    do set "source=%%e" & call...
    EUREKA camarade !

    Punaise, c'était évident, sans les guillemet ma variable "source" avait comme valeur "%%e " (avec l'espace), d'où l'erreur !

    Ca fait plusieures fois que je te vois mettre des guillemets pour entourer le nom de la variable et sa valeur, maintenant je comprend pourquoi -_-u

    A l'avenir j'appliquerais systématiquement cette technique.

    Merci à toi, et je ne saurais quoi te dire si ce n'est...

    ... prépares-toi à mon prochain bug, ça survient toutes les 24H

Discussions similaires

  1. problème avec la Commande Xcopy
    Par stracoma dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 13/08/2013, 22h10
  2. Réponses: 2
    Dernier message: 15/02/2013, 18h25
  3. commande qui copie fichier avec options
    Par pandora19 dans le forum C
    Réponses: 2
    Dernier message: 03/11/2012, 16h33
  4. [XP]copier plusieurs fichiers avec la commande copy
    Par Smip99 dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 16/06/2008, 19h35
  5. Erreur avec la commande copy
    Par Bba_M dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 14/01/2008, 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