Deux commandes dos dans un fichier bat

BAZ187REM -  
 BAZ187REM -
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. cchristian Messages postés 928 Statut Membre 131
     
    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
  2. BAZ187REM
     
    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. cchristian Messages postés 928 Statut Membre 131
       
      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
  3. cchristian Messages postés 928 Statut Membre 131
     
    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
  4. cchristian Messages postés 928 Statut Membre 131
     
    message annulé par moi-même double emploi avec le précédent qui avait disparu !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. BAZ187REM
     
    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
  7. BAZ187REM
     
    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
  8. BAZ187REM
     
    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