Deux commandes dos dans un fichier bat

Bonjour à toutes et tous,

Je cherche désespérément comment faire pour exécuter deux commandes dos dans un fichier bat.

J'explique mon cas, si j'ouvre un invite de commande et que je fais :

set NETUSER=blabla entrée puis une commande rcp.exe cela fonctionne la copie de mon fichier sur un serveur passe sans problème

par contre dans un fichier bat si je fais
set NETUSER=blabla

puis

set ComRCP= rcp.exe balqskdflkqqkldfqld

ca ne fonctionne pas il me dit permission denied.

Comment faire pour avoir dans une meme variable le résultat de deux commandes dos ex

Set NETUSR=set NETUSER=blabla
set CommRCP=rcp.exe qmdslqjdmfqd
set CommandLine=%NETUSR%&&%CommRCP%

si je fais un echo de CommandLine je n'ai que %NETUSR% soit set NETUSER=blabla

J'ai essayé aussi avec les guillemets mais bon lorsque dans le bat j'exécute %CommandLine% il ne reconnait pas la commande du au guillemets et si je traite le résultat de chaine sans les guillemets %CommandLine:"=% et que je fais un echo je n'ai donc que le %NETUSR%

Je sais pas si j'ai été très clair mais si vous avez des questions sur mon problème n'hésitez pas

Merci d'avance pour toutes vos réponses
Configuration: Windows XP
Firefox 3.0.11

7 réponses

  1. Bonsoir,

    Si j'ai bien compris le problème ?
    J'ai fait quelques tests dont ceux-ci, je n'ai pas rencontré de problème particulier semble-t-il. Je n'ai pas pu testé rcp.exe dans sa finalité, à l'exécution il affiche le help !!!!.
    echo off
    SETLOCAL ENABLEdelayedExpansion
    SETLOCAL ENABLEextensions
    CLS
     Set "NETUSR=set NETUSER=blabla"
        echo Test contenu de NETUSR: %NETUSR%
    set "CommRCP=rcp.exe qmdslqjdmfqd"
    rem set "CommRCP=call x.bat qmdslqjdmfqd"
        echo Test contenu de CommRCP:  %CommRCP%
       pause
    set "CommandLine=%NETUSR%&&%CommRCP%"
       echo "Test contenu de CommandLine: %CommandLine%"
     pause
     %CommandLine%
        echo Test contenu de NETUSER: %NETUSER%
    goto :EOF

    RESULTATS avec rcp.exe qmdslqjdmfqd:
    Test contenu de NETUSR: set NETUSER=blabla
    Test contenu de CommRCP:  rcp.exe qmdslqjdmfqd
    Appuyez sur une touche pour continuer...
    "Test contenu de CommandLine: set NETUSER=blabla&&rcp.exe qmdslqjdmfqd"
    Appuyez sur une touche pour continuer...
    
    Copie les fichiers depuis et vers l'ordinateur exécutant le service RCP. (!!!!!!!!!!!!)
    
    RCP [-a | -b] [-h] [-r] [host][.user:]source [host][.user:] path\destination
    
      -a                 Spécifie le mode de transfert ASCII. Ce mode convertit
                         les caractères EOL en retours chariot sous UNIX et en
                         retours chariot/line feed sur PC. C'est le mode de
                         transfert par défaut.
      -b                 Spécifie le mode de transfert d'images binaire.
      -h                 Transfère les fichiers cachés.
      -r                 Copie le contenu de tous les sous-répertoires ;
                         la destination doit être un répertoire.
      host               Spécifie l'hôte local ou distant. Si l'hôte spécifié est
                         une adresse IP, vous devez spécifier l'utilisateur.
      .user:             Spécifie le nom d'utilisateur à utiliser à la place du
                         nom d'utilisateur en cours.
      source             Spécifie les fichiers à copier.
      path\destination   Spécifie le chemin relatif au répertoire de session sur
                         l'hôte distant. Utilisez les caractères d'échappement
                         (\ , ", ou ') dans les chemins distants pour utiliser les
                         caractères jokers sur l'hôte distant.
    
    Test contenu de NETUSER: blabla


    RESULTATS avec call x.bat qmdslqjdmfqd:
    Test contenu de NETUSR: set NETUSER=blabla
    Test contenu de CommRCP:  call x.bat qmdslqjdmfqd
    Appuyez sur une touche pour continuer...
    "Test contenu de CommandLine: set NETUSER=blabla&&call x.bat qmdslqjdmfqd"
    Appuyez sur une touche pour continuer...
    
    Nous sommes passés dans x.bat qmdslqjdmfqd  (<== message renvoyé par x.bat)
    Test contenu de NETUSER: blabla
    0
    1. Merci CChristian pour ton aide,

      il semble qu'avec ton exemple cela ne fonctionne pas mieux :
      echo off
      SETLOCAL ENABLEdelayedExpansion rem <--- commande SETLOCAL n'est pas reconnue
      SETLOCAL ENABLEextensions rem <--- commande SETLOCAL n'est pas reconnue
      CLS
      SET "NETUSR=set NETUSER=blabla"
      ECHO Test contenu de NETUSR: %NETUSR% rem <-- renvoye bien set NETUSER=blabla"
      SET "CommRCP=rcp.exe qmdslqjdmfqd"
      ECHO Test contenu de CommRCP: %CommRCP% rem <-- renvoye bien rcp.exe qmdslqjdmfqd"
      SET "CommandLine=%NETUSR%&&%CommRCP%"
      ECHO "Test contenu de CommandLine: %CommandLine%" rem <-- renvoye uniquement set NETUSER=blabla"
      rem
      rem %CommandLine%
      rem echo Test contenu de NETUSER: %NETUSER%
      goto :EOF
      0
      1. J'ai recréé le cas (l'un des cas ?) en supprimant les doubles quotes de l'instruction :
        set "CommandLine=%NETUSR%&&%CommRCP%"

        "Test contenu de CommandLine: set NETUSER=blabla" (<== il en manque....)
        Appuyez sur une touche pour continuer...

        0
    2. Bonjour,

      Surprenant en effet cela fonctionne chez moi. Restait les commandes SETLOCAL qui, chez toi ne sont pas reconnues mais je viens de faire un essai en les supprimant et c'est bon ! Je ne comprends pas, je vais regarder encore.
      0
      1. message annulé par moi-même double emploi avec le précédent qui avait disparu !
        0
        1. Merci encore pour ton aide, j'ouvre un deuxième post pour un autre problème dans un fichier bat ^^ au cas ou tu peux m'aider aussi.

          Je mets au propre mon fichier bat et je le post ici ce sera peut etre mieux :)
          0
          1. C'est cool je me répond a moi même :)

            Je testerai dans la journée mais je viends de me souvenir qu'il y a des caractères spéciaux en bat

            &<>|^% et peut etre d'autre il faut echappé ces caractères sinon ils sont pris comme commande interne. Pour cela il faut inséré ^ devant chaque caractère que l'on veut garder exemple

            ^& ^< ^> ^| ^^ ^%

            Je dirai si cela fonctionne en mettant le ^ dans ma ligne de commande CommandLine
            0
            1. Bonjour à toutes et tous,

              J'ai trouvé et maintenant cela fonctionne

              set ComNET=set NETUSER=%NET_USR%

              set COMRCP=%LOCAL_PATH%\rcp.exe %LOCAL_FILE% %LOCAL_USR%@%RR_HOST%:%RR_PATH%/%RR_DEST_FILE%

              set ComLineRCP=%ComNET%^&^&%COMRCP%

              set ComRSH=%LOCAL_PATH%\rsh.exe %RR_HOST% -l %LOCAL_USR% chmod a+rw %RR_PATH%/%RR_DEST_FILE% ; touch %RR_PATH%/%LEFT_RR_DEST_FILE%flg; chmod a+rw %RR_PATH%/%LEFT_RR_DEST_FILE%flg

              set ComLineRSH=%ComNET%^&^&%ComRSH%

              echo ****************************** BEGIN **************************************** >> %LOG_FILE%
              echo ** Timestamp.....: %date% %time% >> %LOG_FILE%
              echo ** Publish name..: %PUBLISH_NAME% >> %LOG_FILE%
              echo ******************************************************************************* >> %LOG_FILE%
              echo ** Commande RCP : %COMRCP% >> %LOG_FILE%
              echo ******************************************************************************* >> %LOG_FILE%
              echo ** Commande RSH : %ComRSH% >> %LOG_FILE%
              echo ******************************************************************************* >> %LOG_FILE%
              echo ** %date% %time% : "Begin.... RCP" >> %LOG_FILE%
              %ComLineRCP%
              if ERRORLEVEL 1 goto :errorRCP
              SLEEP %TEMPO_COM%

              echo ** %date% %time% : "Begin.... RSH" >> %LOG_FILE%
              %ComLineRSH%

              if ERRORLEVEL 1 goto :errorRSH
              SLEEP %TEMPO_END%

              echo ** %DONE% : %date% %time% >> %LOG_FILE%
              echo ______________________________ END ________________________________________ >> %LOG_FILE%

              Encore merci à ceux qui auraient pu m'aider ou qui ont lu le post pour s'intéresser :)
              0

              Discussions similaires

              question pix mot caché

              7 réponses