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 :

[batch] Erreur copie cyclique!


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 35
    Par défaut [batch] Erreur copie cyclique!
    Salut à tous!

    Voici un cas sur lequel je ne trouve pas d'issue.

    Contexte :
    J'ai un dossier toto quelque part sur le disque C:\ (je ne connais pas son emplacement exact) et contenant différents fichiers avec diverses extensions.
    Je voudrais réaliser une copie de toto avec son contenu complet dans un répertoire nommé "backups" sous %systemdrive%.

    Problème :
    En utilisant ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    set /p nom=
    for /r "c:\" %%j in (%nom%) do if exist "%%j" (
    @echo | xcopy "%%j" "%systemdrive%\backups\%nom%" /e /i /h
    )>> %systemdrive%\rapport.txt
    A la question de set /p j'indique ==> toto
    J'ai droit à l'erreur : copie cyclique impossible
    J'ai bien dans backups toto et son contenu.
    Je comprends que %%J et %nom% ne peuvent se copier mutuellement.

    En utilisant ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
    set /p nom=
    for /r "c:\" %%j in (%nom%) do if exist "%%j" (
    @echo | xcopy "%%j" "%systemdrive%\backups\" /e /i /h
    )>> %systemdrive%\rapport.txt
    Plus d'erreur mais je n'obtiens que le contenu de toto.
    Pourtant j'utilise "xcopy"?

    Comment pourrais-je copier le dossier toto contenant des fichiers sans avoir cette erreur cyclique?

    Merci!

    >danakil1

  2. #2
    Membre Expert
    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
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
    
    set /p "nom=Nom du dossier (sans guillemets): "
    :-
    for /f "tokens=*" %%a In ('dir /b/ad/s "c:\%nom%"2^>nul') do set "Ch=%%a"
    :-
    if defined Ch (
      xcopy /IE "%Ch%" "%SystemDrive%\Backups\%nom%" > %SystemDrive%\Backup.txt
      explorer.exe,%SystemDrive%
    ) else (echo  pas de dossier "%nom%" dans C:)
    pause

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 35
    Par défaut
    Salut I'm_HERE
    Merci de cette nouvelle prise en compte de cas. Si tu as un peu de temps pourrais m'expliquer ou confirmer certains codes dans ton script.
    Merci d'avance!

    1-
    "nom=Nom du dossier (sans guillemets): "
    Pour quelle raison encadres tu le tout par des guillemets?

    2-
    :-
    Que signifie ceci?

    3-
    ^>
    Cela veut dire tout avant ou tout après?

    4-
    IE
    ?

    5-
    explorer.exe,%SystemDrive%
    Tu lances l'explorer dans %systemdrive% pour savoir si %nom% est présent ou absent ... c'est la virgule qui m'intrigue!

    Encore merci!

  4. #4
    Membre Expert
    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
    Par défaut
    salut,

    Citation Envoyé par danakil1 Voir le message
    Pour quelle raison encadres tu le tout par des guillemets?
    les guillemets sont utilisées dans l'affectaion des variables (set), pour diverses raisons:
    dans ton cas (set /p) c'est juste pour conrôler l'espace entre la saisie utilisateur
    et la chaîne "Nom du dossier (sans guillemets):"

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set /p "nom=Nom du dossier (sans guillemets):  "
    set /p "nom=Nom du dossier (sans guillemets):       "
    set /p "nom=Nom du dossier (sans guillemets):"
    Citation Envoyé par danakil1 Voir le message

    Que signifie ceci? :-
    c'est JUSTE une question d'habitude, je me suis habitué à séparer les parties du codes dans mes scripts :-

    Citation Envoyé par danakil1 Voir le message
    Cela veut dire tout avant ou tout après? ^>
    ">" est un caractère réservé pour l'echapper on utilise le caractère caret "^"


    Citation Envoyé par danakil1 Voir le message
    /IE
    c'est plus joli que /I /E


    Citation Envoyé par danakil1 Voir le message
    Tu lances l'explorer dans %systemdrive% pour savoir si %nom% est présent ou absent ... c'est la virgule qui m'intrigue!
    explorer.exe à ses propres commutateurs et la virgule est utilisée comme séparateur:

    quelques commutateurs:
    ----------------------


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /e et /n  ---> pour changer la vue de la fenêtre de l'explorateur
    /root     ---> pour monter le dossier en haut de l'echelle l'arborescence
    /select   ---> selectionne le dossier (en le mettant en subrillance)

    exemple:
    --------


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    explorer.exe /e,/root,%SystemDrive%\Backups,/select,%SystemDrive%\Backups\%nom%

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 35
    Par défaut
    Re,
    Effectivement avec ces explications je comprends mieux le raisonnement de ton script

    Je vais aller mettre tout cela en application ... intéressant "explorer.exe"!

    Petite question encore :
    Il y a des différences dans l'emploi de "if defined" et "if exist"?

    Bonne journée.

Discussions similaires

  1. Erreur Copy "extra data after last expected column"
    Par bilou972 dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 02/10/2009, 10h51
  2. Batch de copie avec tri des fichiers
    Par zoozbiro dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 05/11/2008, 13h59
  3. Message d'erreur : copy.exe
    Par projetM dans le forum Sécurité
    Réponses: 4
    Dernier message: 18/11/2007, 17h34
  4. Batch - Erreur d'utilisation de la commande ncftpget
    Par koKoTis dans le forum Internet
    Réponses: 1
    Dernier message: 16/08/2006, 15h33
  5. [batch] erreur lancement application
    Par Adren dans le forum Windows
    Réponses: 2
    Dernier message: 10/08/2006, 08h51

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