Batch scripts xcopy

Bonjour,

j'ai cree un script qui me copy plusieurs fichiers d'un repertoire A vers un repertoire B.
mai le probleme est que je ne veux pas ecrazer les fichiers existants,
donc le message d'ecraser les fichiers existants apparait a chaque copie de fichier.
comment est ce que je peux cree la reponse non comme variable pour etre insere automatiquelment pendant la copie?

Merci
Configuration: Windows XP Internet Explorer 7.0

8 réponses

  1. 1. Remplir un fichier avec les fichiers existants: dir repertoire /b > liste.txt
    2. XCOPY en excluant les fichiers repris dans liste.txt : paramètre /EXCLUDE:liste.txt
    1. Contributeur
      en fait il y a une différence entre copy et xcopy, avec copy un seul n suffit comme réponse:
      $ dir /b a
      fichier1
      fichier2
      
      $ dir /b b
      fichier1
      fichier2
      
      $ echo n > rep1
      
      $ copy a\*.* b < rep1
      a\fichier1
      Remplacer b\fichier1 (Oui/Non/Tous) : n
      a\fichier2
      Remplacer b\fichier2 (Oui/Non/Tous) :
              0 fichier(s) copié(s).

      résultat, 0 fichier copié
      j'ajoute un fichier
      $ echo 3333>a\fichier3
      
      $ copy a\*.* b < rep1
      a\fichier1
      Remplacer b\fichier1 (Oui/Non/Tous) : n
      a\fichier2
      Remplacer b\fichier2 (Oui/Non/Tous) :
      a\fichier3
              1 fichier(s) copié(s).

      résultat 1 fichier copié
      avec xcopy, il lui faut autant ou plus de réponses, donc si tu as, par ex. moins de 1000 fichiers, on crée un fichier contenant 1000 n
      $ @echo off
      $ for /l %a in (1,1,1000) do echo n >> reponse
      
      $ xcopy a b /s/e /i < reponse
      Remplacer C:\b\fichier1 (Oui/Non/Tous)?
      ....
      0 fichier(s) copié(s)

      on supprime un fichier pour tester
      $ del b\fichier3
      
      $ xcopy a b /s/e /i < reponse
      Remplacer C:\z\b\fichier1 (Oui/Non/Tous)?
      ......
      a\fichier3
      1 fichier(s) copié(s)

      mais c'est du bricolage, il y a des bons outils de synchronisation pour faire ça :
      https://www.commentcamarche.net/telecharger/securite/sauvegarde/
      1. Misaotra anareo rehetra fa tena nanampy be ahy le izy..

        Many thanks
      2. merci dubcek !
    2. Ou sinon comme disait frameto tu test si le fichier existe déja. Si il existe tu passe au fichier suivant sinon tu le copie.
      if not exist C:\fichier1 xcopy...etc...
      sinon il continue la lecture du script
      1. Contributeur
        cf post 2
        mettre le n dans un fichier et
        xcopy ...< fichier
        1. comment,fais moi une demo,
      2. Contributeur
        je ne comprends pas ce que tu veux, ce que je propose c'est de répondre non à la question de l'écrasement, donc ne sont copiés que les fichiers qui n'existent pas
        1. tu as tout compris je veux repondre non mais je veux que ca soit automatiquement fait par l'ordinateur lui meme.
          c'est a dire dans le script je ne veux pas avoir a appuier sur N tout le temps de la côpy.jai enviiron 9000 fichiers
          et c'est justment comment automatiser ce procesus qui me preocupe,

          merci
      3. Non les gar ca ne marche pas.
        jai essaye mai ca ne marche pour la proposition d ecraser,ca ne poura pas m'aranger.
        je veux plustot que le fichiers existant ne soit pas ecraser ca me permet de reconcilier les fichiers en faisant des decomptes.

        ya pas une autre solution?

        Merci
        1. Tu veux peut-être donner un numéro d'incrément à chaque exemplaire de fichier que tu trouves. Au fil des exécutions de ton script, tu te retrouverais avec ce genre de liste :

          C:\FichierA.txt
          C:\FichierA001.txt
          C:\FichierA002.txt
          C:\FichierA003.txt
          etc.

          Sinon, j'vois pas.
      4. Contributeur
        hello
        tu ne veux pas les écraser, donc automatiser de répondre non à chaque "Remplacer xxxx (Oui/Non/Tous)? "
        essaye
        echo n > rep
        copy ......... < rep
        1. Bonjour,

          C'est pas plus simple de tester l'existence du fichier que tu veux copier et de le supprimer si il existe ?
          Par exemple,
          If exist c:\A.txt del C:\a.txt
          copy a:\z.txt c:\a.txt