Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec la commande xcopy script batch

Nombre de paramètres non valide

Sujet résolu
    16 septembre 2020 à 12:14:54

    Bonjour à toutes et à tous,

    Je rencontre un problème avec la commande xcopy dans l'écriture d'un script.

    J'aime bien trouver par moi-même, mais dans ce cas là j'aimerais comprendre le fonctionnement exact, et la gestion des espaces pour les commandes et paramètres.

    Voici la commande :

    xcopy "C:\Atlantic Zeiser\Données\Base de données*.mdb" "C:\Atlantic Zeiser\Données\Base de données\ARCHIVES\%DA%" /D /E /C /R /H /I /K /Y /S

    Ma variable %DA% est une variable contenant un répertoire avec la date du système au format adéquat créer en amont. Je souhaite récupérer les extensions .mdb de notre base de données pour les archiver dans le dossier créer.

    Résultat du batch avec pause et dir :

    Sachant que la commande xcopy attend deux chemins d'accès, et des paramètres si nécessaire, je vous serais reconnaissant de m'expliquer la raison pour laquelle le nombre de paramètres n'est pas valide.

    Merci d'avance pour votre aide, et bonne journée à vous.

    HARNIST Xavier.

    -
    Edité par HarnistXavier 16 septembre 2020 à 12:17:15

    • Partager sur Facebook
    • Partager sur Twitter
      16 septembre 2020 à 14:38:40

      est-ce qu'il ne pas le "\" dans ton chemin source ? =>"C:\Atlantic Zeiser\Données\Base de données\*.mdb"

      et il y a conflit entre les arguments /S (Copie les répertoires et sous-répertoires à l’exception des répertoires vides.) et /E (Copie les répertoires et sous-répertoires, y compris les répertoires vides.); il ne sait plus si il doit ou pas copier les répertoires vides

      • Partager sur Facebook
      • Partager sur Twitter
        16 septembre 2020 à 17:36:44

        Bonjour umfred et merci pour votre réponse,

        Après modification, l'erreur reste la même, l'invité de commande m'indique que le nombre de paramètre est non valide.

        Effectivement les paramètres sont en conflit, j'ai gardé uniquement les paramètres qui me semblent nécessaire.

        Voici la nouvelle commande :

        xcopy "C:\Atlantic Zeiser\Données\Base de données\*.mdb" "C:\Atlantic Zeiser\Données\Base de données\ARCHIVES\%DA%" /S /I /C

        Dans l'attente d'une réponse de votre part, je vous souhaite une bonne fin de journée ! 

        • Partager sur Facebook
        • Partager sur Twitter
          16 septembre 2020 à 17:57:25

          le /S est trop, on ne copie que des fichiers mdb ici, pas de répertoire. (perso en testant, j'ai eu une erreur "Impossible de réaliser une copie cyclique".

          par contre, tu devrais remettre /D qui permet de copier les fichiers uniquement si la source est plus récente (si tu lances la commande plusieurs fois dans la journée et que tu ne veux pas avoir à confirmer ou pas le remplacement du fichier si il existe)

          SET D=%DATE%
          SET DA=%D:/=-%
          ECHO %DA%
          xcopy "C:\Atlantic Zeiser\Données\Base de données\*.mdb" "C:\Atlantic Zeiser\Données\Base de données\archives\%DA%" /I /C /D
          pause



          • Partager sur Facebook
          • Partager sur Twitter
            17 septembre 2020 à 9:11:12

            Merci encore pour cette réponse qui m'a aidé à améliorer ma commande. 

            J'ai fais énormément de test mais de mon côté toujours le même soucis avec ce bout de code : "Nombre de paramètres non valide"
            Pourtant la syntaxe me semble bien respectée.

            • Partager sur Facebook
            • Partager sur Twitter
              17 septembre 2020 à 10:57:40

              Bonjour,

              Afin que l'on t'aide au mieux peux-tu :

              • Nous fournir ton code en utilisant le bouton '</>' du forum ?
              • Enlever le '@echo off' de ton script, l’exécuter et nous donner le résultat entier que t'affiche l'invite de commande (cmd) ?
              • Nous fournir le résultat de la commande 'xcopy /?' ainsi que ta version de Windows ?
              • Partager sur Facebook
              • Partager sur Twitter
                17 septembre 2020 à 11:15:39

                Bonjour,

                Et merci pour votre réponse.

                Alors je ne suis pas sûr d'avoir compris, mais j'ai résolu le problème. J'avais enfaite ajouté un REM pour mettre un commentaire après le xcopy, et en l'enlevant, la copie s'est déroulée avec succés. C'est étonnant.

                Voici le code : 

                @echo off
                title Compactage base de données
                mode con cols=100 lines=100
                color 0F
                
                echo Script de compactage base de données / XH   
                echo.
                ::start C:\Users\ligne108\Desktop\ScanPack Killer.bat
                cd\
                cd C:\Atlantic Zeiser\Données\Base de données\ARCHIVES
                
                SET D=%DATE%
                SET DA=%D:/=-%
                ECHO %DA%
                mkdir %DA%
                
                xcopy "C:\Atlantic Zeiser\Données\Base de données\*.mdb" "C:\Atlantic Zeiser\Données\Base de données\ARCHIVES\%DA%" /D/I/C
                ::start C:\Atlantic Zeiser\Données\Base de données\AutoCompact.bat
                
                :: start C:\Program Files (x86)\Atlantic Zeiser\ScanPack Pilot\ScanPackPilot2110.exe
                :: exit
                pause > nul
                



                -
                Edité par HarnistXavier 17 septembre 2020 à 11:16:53

                • Partager sur Facebook
                • Partager sur Twitter
                  17 septembre 2020 à 11:24:23

                  Si tu exécutes ton script "à la main" tu as aussi l'erreur ?

                  -
                  Edité par umfred 17 septembre 2020 à 11:26:14

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 septembre 2020 à 13:50:34

                    Alors,

                    Fonctionne :

                    xcopy "C:\Atlantic Zeiser\Données\Base de données\*.mdb" "C:\Atlantic Zeiser\Données\Base de données\ARCHIVES\%DA%" /D/I/C


                    Ne fonctionne pas :

                    xcopy "C:\Atlantic Zeiser\Données\Base de données\*.mdb" "C:\Atlantic Zeiser\Données\Base de données\ARCHIVES\%DA%" /D/I/C REM Commentaire


                    Dans ce second cas, le REM n'est pas compris comme un commentaire mais est interprété par la commande xcopy qui indique qu'il a y un nombre incorrect de paramètre (trop de ce cas-ci, car le REM est interprété comme un troisième argument de position, au même titre que la source et destination).

                    Solution de contournement (le &) :

                    xcopy "C:\Atlantic Zeiser\Données\Base de données\*.mdb" "C:\Atlantic Zeiser\Données\Base de données\ARCHIVES\%DA%" /D/I/C & REM Commentaire



                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 septembre 2020 à 15:35:21

                      D'accord ! Merci beaucoup pour cette explication très claire ! 

                      Je ne me ferai plus avoir à l'avenir.

                      En espérant que ça aide d'autres personnes, je vous souhaite à tous les deux une bonne après-midi.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 septembre 2020 à 15:55:06

                        il devait donc manquer le retour à la ligne entre la fin de la commande du xcopy et le "::start ..." qui suivait
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Problème avec la commande xcopy script batch

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown