[BAT] variable
Résolu
xav3601
Messages postés
3289
Date d'inscription
Statut
Membre
Dernière intervention
-
xav3601 Messages postés 3289 Date d'inscription Statut Membre Dernière intervention -
xav3601 Messages postés 3289 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en train de me battre avec un script bat... et surtout avec les variables!
Je souhaite récupérer differentes valeur dans des variables comme suit:
for /F "Tokens=1-2 Delims= " %%i in (\\Lsinfo\infodoc\02-Sys~1\03-Sys~1\01-Par~1\invent~1\ping\ordinateurs.txt) do (
set etat="eteint"
set serveur=%%i
set ip=%%j
pause
mon probleme?
quand j'utilise par la suite les variables etat, serveur et ip elles sont vides...
est ce que vous voyez d'ou ca peut venir svp?
merci d'avance!
Je suis en train de me battre avec un script bat... et surtout avec les variables!
Je souhaite récupérer differentes valeur dans des variables comme suit:
for /F "Tokens=1-2 Delims= " %%i in (\\Lsinfo\infodoc\02-Sys~1\03-Sys~1\01-Par~1\invent~1\ping\ordinateurs.txt) do (
set etat="eteint"
set serveur=%%i
set ip=%%j
pause
mon probleme?
quand j'utilise par la suite les variables etat, serveur et ip elles sont vides...
est ce que vous voyez d'ou ca peut venir svp?
merci d'avance!
A voir également:
- [BAT] variable
- Fichier bat - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- Vba range avec variable ✓ - Forum VB / VBA
- Txt to bat - Forum Windows
- Range avec une Variable ✓ - Forum VB / VBA
11 réponses
Ca fait longtemps mais il me semble qu'il faut mettre des % autour des noms de variables quand on les utilises par la suite, je me trompe peut-être, cherche un petit cours ou des exemples sur internet sinon.
dans un bat mettre %% devant les variables
dir %1 /s | find "pertoire" >C:\temp\d1.log
for /f "tokens=3 delims= " %%i in (C:\temp\d1.log) do (
dir /A:-D /A:A %%i >C:\temp\d2.log 2>>C:\temp\err.log
....
)
dir %1 /s | find "pertoire" >C:\temp\d1.log
for /f "tokens=3 delims= " %%i in (C:\temp\d1.log) do (
dir /A:-D /A:A %%i >C:\temp\d2.log 2>>C:\temp\err.log
....
)
Merci d'avoir repondu!
donc dans mon cas comment utilisé les variables?
en faisant:
set etat="eteint"
if %%etat=="eteint"
ca devrais reussir le test??"
donc dans mon cas comment utilisé les variables?
en faisant:
set etat="eteint"
if %%etat=="eteint"
ca devrais reussir le test??"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ok merci!
Alors ce que tu as dis marche, mais dans mon cas ca a l'air plus compliqué...
en fait tout viens du fait que c'est dans un for!
exemple:
Set etat=eteint
echo %etat%
ca ca marche ca affiche eteint
par contre ca:
for /F "Tokens=1-2 Delims= " %%i in (\\Lsinfo\infodoc\02-Sys~1\03-Sys~1\01-Par~1\invent~1\ping\ordinateurs.txt) do (
Set etat=eteint
echo %etat%
)
ca marche pas ca affiche:
commande activée/désactivée
suivant si j'ai un @echo off au debut ou pas...
Alors ce que tu as dis marche, mais dans mon cas ca a l'air plus compliqué...
en fait tout viens du fait que c'est dans un for!
exemple:
Set etat=eteint
echo %etat%
ca ca marche ca affiche eteint
par contre ca:
for /F "Tokens=1-2 Delims= " %%i in (\\Lsinfo\infodoc\02-Sys~1\03-Sys~1\01-Par~1\invent~1\ping\ordinateurs.txt) do (
Set etat=eteint
echo %etat%
)
ca marche pas ca affiche:
commande activée/désactivée
suivant si j'ai un @echo off au debut ou pas...
Pour faire un test :
dans ordinateurs.txt j'ai 2 lignes :
a
b
<eof>
le script suivant affiche 2 fois "eteint"
Set etat=eteint
for /F "Tokens=1-2 Delims= " %%i in (ordinateurs.txt) do (
echo %etat%
)
dans ordinateurs.txt j'ai 2 lignes :
a
b
<eof>
le script suivant affiche 2 fois "eteint"
Set etat=eteint
for /F "Tokens=1-2 Delims= " %%i in (ordinateurs.txt) do (
echo %etat%
)
Oui mais le probleme c'est que dans mon cas, je veux declarer la variable dans le for et l'utiliser dans le for et c'est ca qui posse probleme!
par exemple je reprend ton ex:
dans ordinateurs.txt j'ai 2 lignes :
poste1 ip1
poste2 ip2
<eof>
for /F "Tokens=1-2 Delims= " %%i in (\\Lsinfo\infodoc\02-Sys~1\03-Sys~1\01-Par~1\invent~1\ping\ordinateurs.txt) do (
Set poste=%%i
Set ip=%%j
echo %poste%
echo %ip%
)
et la ca marche pas!
Alors je sais pas si y'a un moyen de faire ce que je veux...
par exemple je reprend ton ex:
dans ordinateurs.txt j'ai 2 lignes :
poste1 ip1
poste2 ip2
<eof>
for /F "Tokens=1-2 Delims= " %%i in (\\Lsinfo\infodoc\02-Sys~1\03-Sys~1\01-Par~1\invent~1\ping\ordinateurs.txt) do (
Set poste=%%i
Set ip=%%j
echo %poste%
echo %ip%
)
et la ca marche pas!
Alors je sais pas si y'a un moyen de faire ce que je veux...
essayer
setlocal enableDelayedExpansion
for /F "Tokens=1-2 Delims= " %%i in (\\Lsinfo\infodoc\02-Sys~1\03-Sys~1\01-Par~1\invent~1\ping\ordinateurs.txt) do (
Set poste=%%i
Set ip=%%j
echo !poste!
echo !ip!
)
setlocal disableDelayedExpansion
setlocal enableDelayedExpansion
for /F "Tokens=1-2 Delims= " %%i in (\\Lsinfo\infodoc\02-Sys~1\03-Sys~1\01-Par~1\invent~1\ping\ordinateurs.txt) do (
Set poste=%%i
Set ip=%%j
echo !poste!
echo !ip!
)
setlocal disableDelayedExpansion
c'est vrai j'ai pas mis la partie ou on je les utilises!
mais tout simplement si je fais:
echo %etat%
et bien ca n'affiche rien et si je l'utilise comme suit:
if %etat% = "allume"
a l'execution ca met:
if "" = "allume"
...
J'ai deja regarder different tuto ou autre mais je trouve pas!