A voir également:
- Enabledelayedexpansion
- Fichier batch - Guide
- Batch renommer une partie du nom de plusieurs fichiers - Guide
- Extension batch - Forum Windows
- Batch net use - Forum Réseau
6 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
26 févr. 2010 à 14:27
26 févr. 2010 à 14:27
hello
parce que la variable est créée dans un environnement qui disparait à l'arrêt de nircmd
- essayer setlocal enableDelayedExpansion
- ne pas utiliser nircmd
parce que la variable est créée dans un environnement qui disparait à l'arrêt de nircmd
- essayer setlocal enableDelayedExpansion
- ne pas utiliser nircmd
D'accord, c'est bien ce qu'il me semblait...
A quel moment dois-je utiliser "setlocal enableDelayedExpansion" ?
> j'ai bien tenter de le mettre en début de script mais ca ne semble pas fonctionner
La seconde proposition ne me convient pas. J'ai vraiment besoin de nircmd, tu comprendras que le code décris ci-dessus ne sert qu'a expliquer mon problème. Le script final consiste a executer un programme en silence qui retourne un tas de valeurs et je souhaite n'en recuperer qu'une seule.
Merci pour ta participation.
A quel moment dois-je utiliser "setlocal enableDelayedExpansion" ?
> j'ai bien tenter de le mettre en début de script mais ca ne semble pas fonctionner
La seconde proposition ne me convient pas. J'ai vraiment besoin de nircmd, tu comprendras que le code décris ci-dessus ne sert qu'a expliquer mon problème. Le script final consiste a executer un programme en silence qui retourne un tas de valeurs et je souhaite n'en recuperer qu'une seule.
Merci pour ta participation.
J'ai bien une idée mais je ne sais pas si elle convient:
est-il possible d'ecrire dans les variables d'environnement (de windows) ?
est-ce une bonne idée et si oui, comment fait-on ?
est-il possible d'ecrire dans les variables d'environnement (de windows) ?
est-ce une bonne idée et si oui, comment fait-on ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
>
Skape
26 févr. 2010 à 15:08
26 févr. 2010 à 15:08
bien vu, je n'aurais pas pensé à le mettre là
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
26 févr. 2010 à 15:27
26 févr. 2010 à 15:27
essayer
nircmd execmd cmd /c ( setlocal enableDelayedExpansion & call test.cmd )
nircmd execmd cmd /c ( setlocal enableDelayedExpansion & call test.cmd )
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
26 févr. 2010 à 16:05
26 févr. 2010 à 16:05
le double && a une autre signification que &
& [...] commande1 & commande2 Permet de séparer plusieurs commandes sur la ligne de commande. Cmd.exe exécute la première commande, puis la seconde.
&& [...] commande1 && commande2 Permet d'exécuter la commande suivant && uniquement si la commande précédant le symbole est exécutée correctement. Cmd.exe exécute la première commande, puis la deuxième commande uniquement si la première a été exécutée correctement.
passer les données par un fichier ?
& [...] commande1 & commande2 Permet de séparer plusieurs commandes sur la ligne de commande. Cmd.exe exécute la première commande, puis la seconde.
&& [...] commande1 && commande2 Permet d'exécuter la commande suivant && uniquement si la commande précédant le symbole est exécutée correctement. Cmd.exe exécute la première commande, puis la deuxième commande uniquement si la première a été exécutée correctement.
passer les données par un fichier ?
Pas plus de succès avec la commande "setx ... -m" qui nécessite un rafraichissement de l'environnement. Mais cela m'a permis de me mettre sur la voix d'une autre commande: setenv
Cela n'est pas forcement la meilleure méthode mais j'ai réussi a rafraichir la variable en procédant ainsi:
Contenu du fichier "test.cmd":
setenv -m var1 "Valeur OK"
TEST 2
set var1=Valeur Bidon
nircmd execmd call test.cmd
setenv -m var1 -delete
for /F "delims=" %%i in ('setenv -m var1') do set var1=%%i
echo %var1%
Résultat => Valeur OK
Par contre, ce que je ne comprends pas, c'est pourquoi ai-je besoin de la ligne "setenv -m var1 -delete" pour rafraichir la variable ?
Cela n'est pas forcement la meilleure méthode mais j'ai réussi a rafraichir la variable en procédant ainsi:
Contenu du fichier "test.cmd":
setenv -m var1 "Valeur OK"
TEST 2
set var1=Valeur Bidon
nircmd execmd call test.cmd
setenv -m var1 -delete
for /F "delims=" %%i in ('setenv -m var1') do set var1=%%i
echo %var1%
Résultat => Valeur OK
Par contre, ce que je ne comprends pas, c'est pourquoi ai-je besoin de la ligne "setenv -m var1 -delete" pour rafraichir la variable ?
OK, j'ai compris: j'ai simplement besoin de faire une pause car le script continue son execution alors que nircmd n'a pas encore terminé.
Donc, en somme:
TEST 2
set var1=Valeur Bidon
nircmd execmd test.cmd
ping 0.0.0.0 -n 1 > NUL
for /f "delims=" %%i in ('setenv -m var1') do set var1=%%i
echo %var1%
allez, au dodo.
Donc, en somme:
TEST 2
set var1=Valeur Bidon
nircmd execmd test.cmd
ping 0.0.0.0 -n 1 > NUL
for /f "delims=" %%i in ('setenv -m var1') do set var1=%%i
echo %var1%
allez, au dodo.