A voir également:
- Batch résultat d'une commande -> variable
- Invite de commande - Guide
- Commande terminal mac - Guide
- Resultat foot - Télécharger - Vie quotidienne
- Fichier batch - Guide
- Commande dism - Guide
16 réponses
la variable !drive! est correcte ?
tu mets
echo on
avant
echo Ajout du disque virtuel !drive!
pour qu'il affiche ce qu'il fait
tu mets
echo on
avant
echo Ajout du disque virtuel !drive!
pour qu'il affiche ce qu'il fait
C'est même pas sa le problème, c'est que je voit même pas le
echo Ajout du disque virtuel !drive!
il passe à la pause après avoir monté le lecteur, comme si il faisait rien (ou juste la première commande) de ce qu'il y a dans les parenthèses...
@echo off
setlocal enableDelayedExpansion
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
echo daemon : %daemon%
set ubuntu=D:\OS\Ubuntu9.10.iso
echo ubuntu : %ubuntu%
for /f %%a in ('"%daemon%" -add') do (
set /a drive="%%a"
"%daemon%" -mount !drive!,"%ubuntu%"
echo Ajout du disque virtuel !drive!..............................................[DONE]
echo Montage de l'image CD dans le disque !drive!.................................[DONE]
pause
"%daemon%" -unmount !drive!
echo Demontage de l'image CD................................................[DONE]
"%daemon%" -remove
echo Suppression du disque virtuel !drive!.......................................[DONE]
)
pause
exit
echo Ajout du disque virtuel !drive!
il passe à la pause après avoir monté le lecteur, comme si il faisait rien (ou juste la première commande) de ce qu'il y a dans les parenthèses...
@echo off
setlocal enableDelayedExpansion
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
echo daemon : %daemon%
set ubuntu=D:\OS\Ubuntu9.10.iso
echo ubuntu : %ubuntu%
for /f %%a in ('"%daemon%" -add') do (
set /a drive="%%a"
"%daemon%" -mount !drive!,"%ubuntu%"
echo Ajout du disque virtuel !drive!..............................................[DONE]
echo Montage de l'image CD dans le disque !drive!.................................[DONE]
pause
"%daemon%" -unmount !drive!
echo Demontage de l'image CD................................................[DONE]
"%daemon%" -remove
echo Suppression du disque virtuel !drive!.......................................[DONE]
)
pause
exit
la variable %%a contient le résultat de la commande.
ou tu peux faire
@echo off
setlocal enableDelayedExpansion
for /f %%a in ('D:\Monprogramme.exe') do (
set drive=%%a
"D:\Monprogramme2.exe" !drive!
)
ou tu peux faire
@echo off
setlocal enableDelayedExpansion
for /f %%a in ('D:\Monprogramme.exe') do (
set drive=%%a
"D:\Monprogramme2.exe" !drive!
)
J'arrive à rien, mon programme ressemble à sa maintenant :
@echo off
setlocal enableDelayedExpansion
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
echo daemon : %daemon%
set ubuntu=D:\OS\Ubuntu9.10.iso
echo ubuntu : %ubuntu%
for /f %%a in ('"%daemon%" -add') do ('set /a drive="%%a"')
echo Ajout du disque virtuel !drive!
"%daemon%" -mount !drive!,"%ubuntu%"
echo Montage de l'image CD dans le disque !drive!
pause
"%daemon%" -unmount !drive!
echo Demontage de l'image CD
"%daemon%" -remove
echo Suppression du disque virtuel !drive!
pause
exit
sa ne fonctionne pas, que je mettre "!drive!", "%drive%" ou %%a
@echo off
setlocal enableDelayedExpansion
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
echo daemon : %daemon%
set ubuntu=D:\OS\Ubuntu9.10.iso
echo ubuntu : %ubuntu%
for /f %%a in ('"%daemon%" -add') do ('set /a drive="%%a"')
echo Ajout du disque virtuel !drive!
"%daemon%" -mount !drive!,"%ubuntu%"
echo Montage de l'image CD dans le disque !drive!
pause
"%daemon%" -unmount !drive!
echo Demontage de l'image CD
"%daemon%" -remove
echo Suppression du disque virtuel !drive!
pause
exit
sa ne fonctionne pas, que je mettre "!drive!", "%drive%" ou %%a
il faut que les commandes soient à l'intérieur des () et pas de ' avec le set
for /f %%a in ('"%daemon%" -add') do (set /a drive="%%a"
echo Ajout du disque virtuel !drive!
...
echo Suppression du disque virtuel !drive!
)
pause
exit
for /f %%a in ('"%daemon%" -add') do (set /a drive="%%a"
echo Ajout du disque virtuel !drive!
...
echo Suppression du disque virtuel !drive!
)
pause
exit
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c'est peut-être à cause des () dans set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
renomme le dossier sans ()
renomme le dossier sans ()
vérifier que la boucle retourne quelque chose
for /f %%a in ('"%daemon%" -add') do (
echo +++++%%a++++++
for /f %%a in ('"%daemon%" -add') do (
echo +++++%%a++++++
"%daemon%" -add' ne s'exécute pas ou ne produit aucun résultat, ou plusieurs ? auquel cas ce n'est pas %%a qu'il faut afficher. Affiche l'exécution de
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
"%daemon%" -add
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
"%daemon%" -add
celle là
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
"%daemon%" -add
si elle affiche plusieurs mots comme réponse, %%a du for ne va prendre que le premier
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
"%daemon%" -add
si elle affiche plusieurs mots comme réponse, %%a du for ne va prendre que le premier
donc si il n'y a aucune réponse la boucle for sort immédiatement, normal.
au post #1 J'ai un programme qui renvoie une valeur lorsque qu'il est terminé.
de quoi parles-tu ?
au post #1 J'ai un programme qui renvoie une valeur lorsque qu'il est terminé.
de quoi parles-tu ?
il est dans errorlevel, fais:
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
"%daemon%" -add
echo %errorlevel%
si c'est ça, dans ton script enléve la ligne avec for et met
"%daemon%" -add
set drive=%errorlevel%
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
"%daemon%" -add
echo %errorlevel%
si c'est ça, dans ton script enléve la ligne avec for et met
"%daemon%" -add
set drive=%errorlevel%
-1 est une erreur, donc 0 est une valeur possible, que fait le reste de ton script avec 0 ?
@echo off
setlocal enableDelayedExpansion
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
echo daemon : %daemon%
set ubuntu=D:\OS\Ubuntu9.10.iso
echo ubuntu : %ubuntu%
"%daemon%" -add
set /a mount="%errorlevel%"
echo Ajout du disque virtuel
"%daemon%" -mount %mount%,"%ubuntu%"
echo Montage de l'image CD dans le disque
pause
"%daemon%" -unmount %mount%
echo Demontage de l'image CD
"%daemon%" -remove
echo Suppression du disque virtuel
pause
exit
Le script fonctionne, seulement si aucun autre disque virtuel existe.
Si je crée un disque virtuel (Z:\) avant et que je lance le script, il va lui aussi créer un disque virtuel (Y:\) mais monter l'image disque dans le premier disque virtuel crée (Z:\) et donc démonter l'image disque qui était déjà monté dans Z:\. Et à la fin du script, il va supprimer le disque virtuel qu'il à crée (Y:\)
setlocal enableDelayedExpansion
set daemon=D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe
echo daemon : %daemon%
set ubuntu=D:\OS\Ubuntu9.10.iso
echo ubuntu : %ubuntu%
"%daemon%" -add
set /a mount="%errorlevel%"
echo Ajout du disque virtuel
"%daemon%" -mount %mount%,"%ubuntu%"
echo Montage de l'image CD dans le disque
pause
"%daemon%" -unmount %mount%
echo Demontage de l'image CD
"%daemon%" -remove
echo Suppression du disque virtuel
pause
exit
Le script fonctionne, seulement si aucun autre disque virtuel existe.
Si je crée un disque virtuel (Z:\) avant et que je lance le script, il va lui aussi créer un disque virtuel (Y:\) mais monter l'image disque dans le premier disque virtuel crée (Z:\) et donc démonter l'image disque qui était déjà monté dans Z:\. Et à la fin du script, il va supprimer le disque virtuel qu'il à crée (Y:\)
J'essaye de créer un nouveau lecteur virtuel et monter un fichier dessus et après de le démonter et supprimer le lecteur virtuel :
@echo off
"D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe" -add
"D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe" -mount 0,"D:\OS\Ubuntu9.10.iso"
pause
"D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe" -unmount 0
"D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe" -remove
Mais j'aimerais bien le passer en moins "dur". Je sais que la commande
"D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe" -add
renvoie le numéro du lecteur crée (ici 0 en "dur") et j'aimerais bien pouvoir utiliser cette possibilité pour pouvoir lancer l'image sur un autre lecteur que le lecteur 0. Donc mémoriser la valeur de retour de
"D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe" -add
dans une variable nommé "drive" pour la réutiliser dans les lignes suivantes :
"D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe" -mount %drive%,"D:\OS\Ubuntu9.10.iso"
"D:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe" -unmount %drive%
Est-ce que ta solution enregistre le retour dans une variable?