Forum Clubic

Problème avec xcopy

Bonjour à tous!

J’ai un problème avec xcopy, j’ai écrit une petite ligne en batch:

xcopy "%appdata%\.minecraft" "%appdata%\.minecraft_vanilla\" /E /R /K /H /X /Y /I

Et cette ligne est parfaitement fonctionnelle sur mon PC et sur le PC d’un ami. Toutefois, sur plusieurs autres PC, également sous windows 7, au moment ou je lance cette commande, j’obtiens un “access denied” et je ne sais absolument pas pourquoi. J’ai l’impression que ma ligne marche sur 50% des PC et sur les autres 50% j’obtiens cette erreur.
Quelqu’un peut-il m’aider?

Ps: J’ai mis a peu prêt tout ce que je pouvais mettre niveau argument sur cette commande, il y en a quelques unes qui servent à rien mais elles ne sont pas cause de mon problème.

Merci
Maxinova

Bonjour .

Exécutez la commande en mode sans échec , cela devrait bien se passer , il doit y’ avoir un service qui verrouille un

dossier ou un fichier .

N’y a t-il pas possibilité de faire fonctionner cette commande normalement?
J’arrive pourtant à faire manuellement toutes les modifications que fait mon bat, sans fermer aucun processus ou service.

Bonsoir,

Est-ce que tu as le message direct ou c’est seulement au bout d’un certain temps?

Si c’est direct alors:

  • soit le premier fichier accéder en copie est bloqué par un process comme précédemment mentionner
  • soit c’est un problème de droit en lecture sur la source ou en écriture sur la destination

Si quelques fichier sont copier avant que le message n’apparaisse alors c’est plutôt la qu’un process bloque un fichier.

Pour mieux identifier ce qu’il se passe, je t’invite à faire des test en modifiant:

  • le répertoire destination
  • le répertoire source

En utilisant des chemins qui ne sont pas dans des répertoires systèmes il sera plus facile de comprendre ce qui ne va pas.

Merci de ta réponse

Et bien le message apparait directement au lancement du bat, également, dans mon bat, j’ai d’autres commandes xcopy qui pointent vers une destination autre de celle que j’ai mise dans mon premier post et pourtant, le problème persiste toujours.

Vu qu’%appdata% est un dossier système, tu as essayé de donner les droits administrateur à ton batch ?

Sinon, depuis Vista, il est plutôt recommandé d’utiliser la commande Robocopy. Si tu comptes synchroniser deux dossiers, il vaut mieux alors taper ceci :

robocopy /mir "%appdata%\.minecraft" "%appdata%\.minecraft_vanilla"

Attention : le paramètre “/mir” fait une copie miroir et efface tout fichier “en trop” dans la destination par rapport à la source. Cette commande doit donc être utilisée avec précaution.

Quelques rappele lorsque l’on cherche à comprendre ce qui ne va pas dans un batch:

  • tout re-dérouler ligne par ligne
  • modifier une seule chose à la fois

dans ton cas il semble évident que c’est l’environnement et non le script qui soit en cause mais pour identifier ce qui ne va pas les règles précédentes s’applique quand même.

donc plusieurs erreurs pour plusieurs lignes
si toutes ces lignes ont un point commun (source, destination, option…) c’est un bon point de départ pour identifier ou le problème ce situe mais il ne faut pas pour autant écarter tout le reste.

Et surtout il faut vérifier une commande en erreur à la fois. Il y a des chances que la cause de l’erreur de la première ligne soit la même pour le reste.

Je me rends compte que ma question initiale n’était pas très bien formulée:

Est-ce que tu as le message dès le lancement de ta commande XCOPY ou est-ce qu’elle commence à copier des fichiers avant d’afficher l’erreur?

Et est-ce qu’elles fonctionnent celles-ci ?

Lorsque je t’invite à modifier les chemins de sources/destinations c’est uniquement pour tester le comportement de ta ligne de commande. Si en changeant de répertoire la ligne de commande fonctionne alors il y a de forte chance que ce soit une histoire de droit.

Après il y a d’autres choses à vérifier:

  • est-ce que tes variables d’environnement sont bien définies sur les postes en échec?
  • est-ce qu’elles ont bien les valeurs auxquelles tu t’attends?

Une méthode que j’utilise régulièrement est d’ajouter la commande ECHO en debut d’une ligne de commande afin d’afficher la ligne avec les valeurs des variables et non leur nom.

Bon, et bien le problème ne venait pas de l’environnement mais bien du script.
J’ai réécrit ma ligne, en ne mettant aucun argument excepté le /E, et là, tout fonctionne à merveille, et ce, sur tout les PC
Je ne sais lequel des arguments posait problème, mais en tout cas maintenant c’est réglé.

Merci en tout cas pour votre aide!

PS: Je dis “argument” mais je ne suis même pas sûr que ce soit le nom adapté.

Argument, commutateurs, options, switch… on peut en débattre mais je doute que cela apporte grand chose à l’histoire :ane: