Batch résultat d'une commande -> variable
Fermé
Remad
-
20 déc. 2009 à 21:01
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 12 janv. 2010 à 07:33
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 12 janv. 2010 à 07:33
A voir également:
- Batch résultat d'une commande -> variable
- Invite de commande - Guide
- Commande terminal mac - Guide
- Fichier batch - Guide
- Lexer resultat - Télécharger - Sport
- Resultat foot - Télécharger - Vie quotidienne
16 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 déc. 2009 à 08:50
21 déc. 2009 à 08:50
hello
@echo off
for /f %%a in ('D:\Monprogramme.exe') do "D:\Monprogramme2.exe" %%a
@echo off
for /f %%a in ('D:\Monprogramme.exe') do "D:\Monprogramme2.exe" %%a
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
22 déc. 2009 à 07:41
22 déc. 2009 à 07:41
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 déc. 2009 à 15:23
21 déc. 2009 à 15:23
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 déc. 2009 à 17:07
21 déc. 2009 à 17:07
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
22 déc. 2009 à 09:53
22 déc. 2009 à 09:53
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 ()
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
23 déc. 2009 à 08:12
23 déc. 2009 à 08:12
enlève le echo off et regarde chaque commande qui s'affiche à l'exécution
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
23 déc. 2009 à 09:55
23 déc. 2009 à 09:55
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++++++
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
29 déc. 2009 à 07:23
29 déc. 2009 à 07:23
"%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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
29 déc. 2009 à 13:03
29 déc. 2009 à 13:03
le for s'en fiche, qu'affiche la commande ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
30 déc. 2009 à 08:24
30 déc. 2009 à 08:24
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
30 déc. 2009 à 12:07
30 déc. 2009 à 12:07
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 ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
30 déc. 2009 à 14:45
30 déc. 2009 à 14:45
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%
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
31 déc. 2009 à 08:22
31 déc. 2009 à 08:22
ne faut-il pas exécuter le -mount avant le -add ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
31 déc. 2009 à 12:15
31 déc. 2009 à 12:15
-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:\)
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
12 janv. 2010 à 07:33
12 janv. 2010 à 07:33
je n'ai pas vraiment saisi ce que fait ce programme, mais si il n'affiche aucun résultat et que %errorlevel% reste à 0, je ne vois pas très bien comment avoir un résultat dans une variable
21 déc. 2009 à 15:15
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?