Deux commandes dos dans un fichier bat
BAZ187REM
-
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
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
A voir également:
- Deux commandes dos dans un fichier bat
- Creer un fichier .bat - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
7 réponses
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 !!!!.
RESULTATS avec rcp.exe qmdslqjdmfqd:
RESULTATS avec call x.bat qmdslqjdmfqd:
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
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
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :)
Je mets au propre mon fichier bat et je le post ici ce sera peut etre mieux :)
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
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
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 :)
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 :)