sous batch, je suis arrivé au maximum a faire un "route print | find /i
"passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a dire
recuperé que l'adresse IP, pour ensuite pouvoir faire un set et pouvoir
mettre cette variable dans ma ligne de commmande route add.
sous batch, je suis arrivé au maximum a faire un "route print | find /i
"passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a dire
recuperé que l'adresse IP, pour ensuite pouvoir faire un set et pouvoir
mettre cette variable dans ma ligne de commmande route add.
sous batch, je suis arrivé au maximum a faire un "route print | find /i
"passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a dire
recuperé que l'adresse IP, pour ensuite pouvoir faire un set et pouvoir
mettre cette variable dans ma ligne de commmande route add.
"Channels" wrote in message
news:
<snip>sous batch, je suis arrivé au maximum a faire un "route print | find /i
"passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a dire
recuperé que l'adresse IP, pour ensuite pouvoir faire un set et pouvoir
mettre cette variable dans ma ligne de commmande route add.
Pour ma part j'utilise souvent la commande "for /f" pour ce genre de
découpage. Généralement on peut passer la commande qui génère l'affichage en
paramètre de "for /f" mais dans ton exemple il y a un pipe "|" qui oblige à
passer par un fichier intermédiaire:
C:>ipconfig | find /i "passerelle" > passerelle.txt
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p
192.168.0.1
Note qu'il reste un espace devant l'adresse, présent entre les deux points et
l'adresse dans l'affichage d'origine. J'utilise d'ailleurs ipconfig plutôt
que route print pour n'avoir qu'un espace. Si cet espace te gêne pour les
manips dont tu as besoin, tu peux repasser le résultat à la moulinette de
"for /f":
C:>ipconfig | find /i "passerelle" > passerelle.txt
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p >
passerelle.txt
C:>for /f %%p in (passerelle.txt) do echo %%p
192.168.0.1
Je sais, c'est très rustique et il y a sans doute mieux, mais au moins ça
marche.
Jacques
"Channels" <john@doe.com> wrote in message
news:mn.d2587d566d39c070.23854@not-for-mail...
<snip>
sous batch, je suis arrivé au maximum a faire un "route print | find /i
"passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a dire
recuperé que l'adresse IP, pour ensuite pouvoir faire un set et pouvoir
mettre cette variable dans ma ligne de commmande route add.
Pour ma part j'utilise souvent la commande "for /f" pour ce genre de
découpage. Généralement on peut passer la commande qui génère l'affichage en
paramètre de "for /f" mais dans ton exemple il y a un pipe "|" qui oblige à
passer par un fichier intermédiaire:
C:>ipconfig | find /i "passerelle" > passerelle.txt
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p
192.168.0.1
Note qu'il reste un espace devant l'adresse, présent entre les deux points et
l'adresse dans l'affichage d'origine. J'utilise d'ailleurs ipconfig plutôt
que route print pour n'avoir qu'un espace. Si cet espace te gêne pour les
manips dont tu as besoin, tu peux repasser le résultat à la moulinette de
"for /f":
C:>ipconfig | find /i "passerelle" > passerelle.txt
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p >
passerelle.txt
C:>for /f %%p in (passerelle.txt) do echo %%p
192.168.0.1
Je sais, c'est très rustique et il y a sans doute mieux, mais au moins ça
marche.
Jacques
"Channels" wrote in message
news:
<snip>sous batch, je suis arrivé au maximum a faire un "route print | find /i
"passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a dire
recuperé que l'adresse IP, pour ensuite pouvoir faire un set et pouvoir
mettre cette variable dans ma ligne de commmande route add.
Pour ma part j'utilise souvent la commande "for /f" pour ce genre de
découpage. Généralement on peut passer la commande qui génère l'affichage en
paramètre de "for /f" mais dans ton exemple il y a un pipe "|" qui oblige à
passer par un fichier intermédiaire:
C:>ipconfig | find /i "passerelle" > passerelle.txt
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p
192.168.0.1
Note qu'il reste un espace devant l'adresse, présent entre les deux points et
l'adresse dans l'affichage d'origine. J'utilise d'ailleurs ipconfig plutôt
que route print pour n'avoir qu'un espace. Si cet espace te gêne pour les
manips dont tu as besoin, tu peux repasser le résultat à la moulinette de
"for /f":
C:>ipconfig | find /i "passerelle" > passerelle.txt
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p >
passerelle.txt
C:>for /f %%p in (passerelle.txt) do echo %%p
192.168.0.1
Je sais, c'est très rustique et il y a sans doute mieux, mais au moins ça
marche.
Jacques
Merci, ca peut etre sympa, mais a la seconde ligne, j'ai une erreur du
genre
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p >
passerelle.
txt
%%p était inattendu.
Merci, ca peut etre sympa, mais a la seconde ligne, j'ai une erreur du
genre
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p >
passerelle.
txt
%%p était inattendu.
Merci, ca peut etre sympa, mais a la seconde ligne, j'ai une erreur du
genre
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p >
passerelle.
txt
%%p était inattendu.
"Channels" wrote in message
news:Merci, ca peut etre sympa, mais a la seconde ligne, j'ai une erreur du
genre
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p >
passerelle.
txt
%%p était inattendu.
Si tu testes mon exemple directement en ligne de commande, il faut que tu ne
mettes qu'un signe % devant les noms de variable (%p au lieu de %%p). La
syntaxe avec double pourcentage %%p est à utiliser dans un fichier de
commandes.
Jacques
"Channels" <john@doe.com> wrote in message
news:mn.d29a7d56b79b75e1.23854@not-for-mail...
Merci, ca peut etre sympa, mais a la seconde ligne, j'ai une erreur du
genre
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p >
passerelle.
txt
%%p était inattendu.
Si tu testes mon exemple directement en ligne de commande, il faut que tu ne
mettes qu'un signe % devant les noms de variable (%p au lieu de %%p). La
syntaxe avec double pourcentage %%p est à utiliser dans un fichier de
commandes.
Jacques
"Channels" wrote in message
news:Merci, ca peut etre sympa, mais a la seconde ligne, j'ai une erreur du
genre
C:>for /f "delims=: tokens=2" %%p in (passerelle.txt) do echo %%p >
passerelle.
txt
%%p était inattendu.
Si tu testes mon exemple directement en ligne de commande, il faut que tu ne
mettes qu'un signe % devant les noms de variable (%p au lieu de %%p). La
syntaxe avec double pourcentage %%p est à utiliser dans un fichier de
commandes.
Jacques
bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find
/i "passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a
dire recuperé que l'adresse IP, pour ensuite pouvoir faire un set et
pouvoir mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette
variable pour pouvoir faire cette route.
bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find
/i "passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a
dire recuperé que l'adresse IP, pour ensuite pouvoir faire un set et
pouvoir mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette
variable pour pouvoir faire cette route.
bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find
/i "passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a
dire recuperé que l'adresse IP, pour ensuite pouvoir faire un set et
pouvoir mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette
variable pour pouvoir faire cette route.
Dans le message news: ,
Channels s'est ainsi exprimé:bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find
/i "passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a
dire recuperé que l'adresse IP, pour ensuite pouvoir faire un set et
pouvoir mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette
variable pour pouvoir faire cette route.
Utilise p.ex. la commande SETX !!!!!
Elle est faite pour çà ..
Elle fait partie du Resource Kit, mais est téléchargeable gratuitement :
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setx-o.asp
Attention : sa syntaxe est légèrement différente de SET (pas de signe "=")
SETX sert en particuleir à extraire des chaines à des endroits bien
spécifiques dans une liste de lignes. (p.ex. récupérer le TTL d'une commande
PING, ...)
L'aide intégrée est très complète. Taper "SETX /?" ou "SETX -i"
Dans ton cas, tu vas voir que c'est TRÈS SIMPEL à résoudre :
1) Générer un fichier texte contenant le résultat de la commande "Route
print" :
C:WINDOWSsystem32>route print >route.txt
2) Analyser (une fois pour toute) ce fichier pour énumérer
tous les "groupes" de caractères :
C:WINDOWSsystem32>setx TOTO -f route.txt -x
Commentaires :
"setx" exige dans tous les cas en paramètre le nom d'une variable
d'environnement, même si elle n'en a pas besoin.
Le nom "TOTO" est un nom quelconque (il ne sert à rien ici)
On aurait pu écrire "setx DUSCHMURZ -f route.txt -x"
Cela affiche la liste suivante (exemple obtenu chez moi. NB :j'ai
élagué!)
(0,0 ======================================....
(1,0 Liste) (1,1 d'Interfaces)
(2,0 0x1) (2,1 ...........................) (2,2 MS) (2,3 TCP) (2,4
Loopback) (2
,5 interface)
(3,0 0x2) (3,1 ...00) (3,2 0d) (3,3 61) (3,4 19) (3,5 3a) (3,6 f4) (3,7
......)
(3,8 Intel(R)) (3,9 PRO/100) (3,10 VE) (3,11 Network) (3,12 Connection)
(3,13 -)
.....
(18,4 1)
(19,0 Passerelle) (19,1 par) (19,2 défaut :) (19,3 192.168.0.2)
...
Pas très clair au premier abord, mais on voit quand même que ce qui est
intéressant (l'adresse de passerelle) se trouve en (19,3)
(19ème ligne, 3ème groupe) :
(19,3 192.168.0.2)
On pourrait donc demander à SETX de chercher le groupe (19,3),
mais cela ne serait pas universel (le n° de ligne dépend du nombre
de cartes réseau)
On va donc raisonner e relatif, par rapport à la chaine "Passerelle"
L'adresse IP est sur la même ligne que la chaine "Passerelle",
et est située à 3 groupes de distance
-> 0,3 de coordonnées relatives
3) Extraire directement dans une variable d'environnement ce groupe :
(j'ai appelé cette variable "GATEWAY")
C:WINDOWSsystem32>setx GATEWAY -f route.txt -r 0,3 "Passerelle" -m
Extracted value is: 192.168.0.2
NB : le switch "-m" est facultatif; Il sert à placer la variable dans
le contexte machine, et non pas user :
HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment
au lieu de
HKCUEnvironment
Dans le message news:mn.d2587d566d39c070.23854@not-for-mail ,
Channels <john@doe.com> s'est ainsi exprimé:
bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find
/i "passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a
dire recuperé que l'adresse IP, pour ensuite pouvoir faire un set et
pouvoir mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette
variable pour pouvoir faire cette route.
Utilise p.ex. la commande SETX !!!!!
Elle est faite pour çà ..
Elle fait partie du Resource Kit, mais est téléchargeable gratuitement :
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setx-o.asp
Attention : sa syntaxe est légèrement différente de SET (pas de signe "=")
SETX sert en particuleir à extraire des chaines à des endroits bien
spécifiques dans une liste de lignes. (p.ex. récupérer le TTL d'une commande
PING, ...)
L'aide intégrée est très complète. Taper "SETX /?" ou "SETX -i"
Dans ton cas, tu vas voir que c'est TRÈS SIMPEL à résoudre :
1) Générer un fichier texte contenant le résultat de la commande "Route
print" :
C:WINDOWSsystem32>route print >route.txt
2) Analyser (une fois pour toute) ce fichier pour énumérer
tous les "groupes" de caractères :
C:WINDOWSsystem32>setx TOTO -f route.txt -x
Commentaires :
"setx" exige dans tous les cas en paramètre le nom d'une variable
d'environnement, même si elle n'en a pas besoin.
Le nom "TOTO" est un nom quelconque (il ne sert à rien ici)
On aurait pu écrire "setx DUSCHMURZ -f route.txt -x"
Cela affiche la liste suivante (exemple obtenu chez moi. NB :j'ai
élagué!)
(0,0 ======================================....
(1,0 Liste) (1,1 d'Interfaces)
(2,0 0x1) (2,1 ...........................) (2,2 MS) (2,3 TCP) (2,4
Loopback) (2
,5 interface)
(3,0 0x2) (3,1 ...00) (3,2 0d) (3,3 61) (3,4 19) (3,5 3a) (3,6 f4) (3,7
......)
(3,8 Intel(R)) (3,9 PRO/100) (3,10 VE) (3,11 Network) (3,12 Connection)
(3,13 -)
.....
(18,4 1)
(19,0 Passerelle) (19,1 par) (19,2 défaut :) (19,3 192.168.0.2)
...
Pas très clair au premier abord, mais on voit quand même que ce qui est
intéressant (l'adresse de passerelle) se trouve en (19,3)
(19ème ligne, 3ème groupe) :
(19,3 192.168.0.2)
On pourrait donc demander à SETX de chercher le groupe (19,3),
mais cela ne serait pas universel (le n° de ligne dépend du nombre
de cartes réseau)
On va donc raisonner e relatif, par rapport à la chaine "Passerelle"
L'adresse IP est sur la même ligne que la chaine "Passerelle",
et est située à 3 groupes de distance
-> 0,3 de coordonnées relatives
3) Extraire directement dans une variable d'environnement ce groupe :
(j'ai appelé cette variable "GATEWAY")
C:WINDOWSsystem32>setx GATEWAY -f route.txt -r 0,3 "Passerelle" -m
Extracted value is: 192.168.0.2
NB : le switch "-m" est facultatif; Il sert à placer la variable dans
le contexte machine, et non pas user :
HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment
au lieu de
HKCUEnvironment
Dans le message news: ,
Channels s'est ainsi exprimé:bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find
/i "passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a
dire recuperé que l'adresse IP, pour ensuite pouvoir faire un set et
pouvoir mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette
variable pour pouvoir faire cette route.
Utilise p.ex. la commande SETX !!!!!
Elle est faite pour çà ..
Elle fait partie du Resource Kit, mais est téléchargeable gratuitement :
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setx-o.asp
Attention : sa syntaxe est légèrement différente de SET (pas de signe "=")
SETX sert en particuleir à extraire des chaines à des endroits bien
spécifiques dans une liste de lignes. (p.ex. récupérer le TTL d'une commande
PING, ...)
L'aide intégrée est très complète. Taper "SETX /?" ou "SETX -i"
Dans ton cas, tu vas voir que c'est TRÈS SIMPEL à résoudre :
1) Générer un fichier texte contenant le résultat de la commande "Route
print" :
C:WINDOWSsystem32>route print >route.txt
2) Analyser (une fois pour toute) ce fichier pour énumérer
tous les "groupes" de caractères :
C:WINDOWSsystem32>setx TOTO -f route.txt -x
Commentaires :
"setx" exige dans tous les cas en paramètre le nom d'une variable
d'environnement, même si elle n'en a pas besoin.
Le nom "TOTO" est un nom quelconque (il ne sert à rien ici)
On aurait pu écrire "setx DUSCHMURZ -f route.txt -x"
Cela affiche la liste suivante (exemple obtenu chez moi. NB :j'ai
élagué!)
(0,0 ======================================....
(1,0 Liste) (1,1 d'Interfaces)
(2,0 0x1) (2,1 ...........................) (2,2 MS) (2,3 TCP) (2,4
Loopback) (2
,5 interface)
(3,0 0x2) (3,1 ...00) (3,2 0d) (3,3 61) (3,4 19) (3,5 3a) (3,6 f4) (3,7
......)
(3,8 Intel(R)) (3,9 PRO/100) (3,10 VE) (3,11 Network) (3,12 Connection)
(3,13 -)
.....
(18,4 1)
(19,0 Passerelle) (19,1 par) (19,2 défaut :) (19,3 192.168.0.2)
...
Pas très clair au premier abord, mais on voit quand même que ce qui est
intéressant (l'adresse de passerelle) se trouve en (19,3)
(19ème ligne, 3ème groupe) :
(19,3 192.168.0.2)
On pourrait donc demander à SETX de chercher le groupe (19,3),
mais cela ne serait pas universel (le n° de ligne dépend du nombre
de cartes réseau)
On va donc raisonner e relatif, par rapport à la chaine "Passerelle"
L'adresse IP est sur la même ligne que la chaine "Passerelle",
et est située à 3 groupes de distance
-> 0,3 de coordonnées relatives
3) Extraire directement dans une variable d'environnement ce groupe :
(j'ai appelé cette variable "GATEWAY")
C:WINDOWSsystem32>setx GATEWAY -f route.txt -r 0,3 "Passerelle" -m
Extracted value is: 192.168.0.2
NB : le switch "-m" est facultatif; Il sert à placer la variable dans
le contexte machine, et non pas user :
HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment
au lieu de
HKCUEnvironment
Il se trouve que Jean-Claude BELLAMY a formulé :Dans le message news: ,
Channels s'est ainsi exprimé:bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find
/i "passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a
dire recuperé que l'adresse IP, pour ensuite pouvoir faire un set et
pouvoir mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette
variable pour pouvoir faire cette route.
Utilise p.ex. la commande SETX !!!!!
Elle est faite pour çà ..
Elle fait partie du Resource Kit, mais est téléchargeable gratuitement :
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setx-o.asp
Attention : sa syntaxe est légèrement différente de SET (pas de signe "=")
SETX sert en particuleir à extraire des chaines à des endroits bien
spécifiques dans une liste de lignes. (p.ex. récupérer le TTL d'une
commande PING, ...)
L'aide intégrée est très complète. Taper "SETX /?" ou "SETX -i"
Dans ton cas, tu vas voir que c'est TRÈS SIMPEL à résoudre :
1) Générer un fichier texte contenant le résultat de la commande "Route
print" :
C:WINDOWSsystem32>route print >route.txt
2) Analyser (une fois pour toute) ce fichier pour énumérer
tous les "groupes" de caractères :
C:WINDOWSsystem32>setx TOTO -f route.txt -x
Commentaires :
"setx" exige dans tous les cas en paramètre le nom d'une variable
d'environnement, même si elle n'en a pas besoin.
Le nom "TOTO" est un nom quelconque (il ne sert à rien ici)
On aurait pu écrire "setx DUSCHMURZ -f route.txt -x"
Cela affiche la liste suivante (exemple obtenu chez moi. NB :j'ai
élagué!)
(0,0 ======================================....
(1,0 Liste) (1,1 d'Interfaces)
(2,0 0x1) (2,1 ...........................) (2,2 MS) (2,3 TCP) (2,4
Loopback) (2
,5 interface)
(3,0 0x2) (3,1 ...00) (3,2 0d) (3,3 61) (3,4 19) (3,5 3a) (3,6 f4) (3,7
......)
(3,8 Intel(R)) (3,9 PRO/100) (3,10 VE) (3,11 Network) (3,12 Connection)
(3,13 -)
.....
(18,4 1)
(19,0 Passerelle) (19,1 par) (19,2 défaut :) (19,3 192.168.0.2)
...
Pas très clair au premier abord, mais on voit quand même que ce qui est
intéressant (l'adresse de passerelle) se trouve en (19,3)
(19ème ligne, 3ème groupe) :
(19,3 192.168.0.2)
On pourrait donc demander à SETX de chercher le groupe (19,3),
mais cela ne serait pas universel (le n° de ligne dépend du nombre
de cartes réseau)
On va donc raisonner e relatif, par rapport à la chaine "Passerelle"
L'adresse IP est sur la même ligne que la chaine "Passerelle",
et est située à 3 groupes de distance
-> 0,3 de coordonnées relatives
3) Extraire directement dans une variable d'environnement ce groupe :
(j'ai appelé cette variable "GATEWAY")
C:WINDOWSsystem32>setx GATEWAY -f route.txt -r 0,3 "Passerelle"
-m
Extracted value is: 192.168.0.2
NB : le switch "-m" est facultatif; Il sert à placer la variable dans
le contexte machine, et non pas user :
HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment
au lieu de
HKCUEnvironment
Ca a l'air pas mal, mais question conne, comment est deffini la variable dans
une ligne de commande ?
par exemple pour moi
route add blabla mask blabla %GATEWAY
Il se trouve que Jean-Claude BELLAMY a formulé :
Dans le message news:mn.d2587d566d39c070.23854@not-for-mail ,
Channels <john@doe.com> s'est ainsi exprimé:
bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find
/i "passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a
dire recuperé que l'adresse IP, pour ensuite pouvoir faire un set et
pouvoir mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette
variable pour pouvoir faire cette route.
Utilise p.ex. la commande SETX !!!!!
Elle est faite pour çà ..
Elle fait partie du Resource Kit, mais est téléchargeable gratuitement :
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setx-o.asp
Attention : sa syntaxe est légèrement différente de SET (pas de signe "=")
SETX sert en particuleir à extraire des chaines à des endroits bien
spécifiques dans une liste de lignes. (p.ex. récupérer le TTL d'une
commande PING, ...)
L'aide intégrée est très complète. Taper "SETX /?" ou "SETX -i"
Dans ton cas, tu vas voir que c'est TRÈS SIMPEL à résoudre :
1) Générer un fichier texte contenant le résultat de la commande "Route
print" :
C:WINDOWSsystem32>route print >route.txt
2) Analyser (une fois pour toute) ce fichier pour énumérer
tous les "groupes" de caractères :
C:WINDOWSsystem32>setx TOTO -f route.txt -x
Commentaires :
"setx" exige dans tous les cas en paramètre le nom d'une variable
d'environnement, même si elle n'en a pas besoin.
Le nom "TOTO" est un nom quelconque (il ne sert à rien ici)
On aurait pu écrire "setx DUSCHMURZ -f route.txt -x"
Cela affiche la liste suivante (exemple obtenu chez moi. NB :j'ai
élagué!)
(0,0 ======================================....
(1,0 Liste) (1,1 d'Interfaces)
(2,0 0x1) (2,1 ...........................) (2,2 MS) (2,3 TCP) (2,4
Loopback) (2
,5 interface)
(3,0 0x2) (3,1 ...00) (3,2 0d) (3,3 61) (3,4 19) (3,5 3a) (3,6 f4) (3,7
......)
(3,8 Intel(R)) (3,9 PRO/100) (3,10 VE) (3,11 Network) (3,12 Connection)
(3,13 -)
.....
(18,4 1)
(19,0 Passerelle) (19,1 par) (19,2 défaut :) (19,3 192.168.0.2)
...
Pas très clair au premier abord, mais on voit quand même que ce qui est
intéressant (l'adresse de passerelle) se trouve en (19,3)
(19ème ligne, 3ème groupe) :
(19,3 192.168.0.2)
On pourrait donc demander à SETX de chercher le groupe (19,3),
mais cela ne serait pas universel (le n° de ligne dépend du nombre
de cartes réseau)
On va donc raisonner e relatif, par rapport à la chaine "Passerelle"
L'adresse IP est sur la même ligne que la chaine "Passerelle",
et est située à 3 groupes de distance
-> 0,3 de coordonnées relatives
3) Extraire directement dans une variable d'environnement ce groupe :
(j'ai appelé cette variable "GATEWAY")
C:WINDOWSsystem32>setx GATEWAY -f route.txt -r 0,3 "Passerelle"
-m
Extracted value is: 192.168.0.2
NB : le switch "-m" est facultatif; Il sert à placer la variable dans
le contexte machine, et non pas user :
HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment
au lieu de
HKCUEnvironment
Ca a l'air pas mal, mais question conne, comment est deffini la variable dans
une ligne de commande ?
par exemple pour moi
route add blabla mask blabla %GATEWAY
Il se trouve que Jean-Claude BELLAMY a formulé :Dans le message news: ,
Channels s'est ainsi exprimé:bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find
/i "passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a
dire recuperé que l'adresse IP, pour ensuite pouvoir faire un set et
pouvoir mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette
variable pour pouvoir faire cette route.
Utilise p.ex. la commande SETX !!!!!
Elle est faite pour çà ..
Elle fait partie du Resource Kit, mais est téléchargeable gratuitement :
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setx-o.asp
Attention : sa syntaxe est légèrement différente de SET (pas de signe "=")
SETX sert en particuleir à extraire des chaines à des endroits bien
spécifiques dans une liste de lignes. (p.ex. récupérer le TTL d'une
commande PING, ...)
L'aide intégrée est très complète. Taper "SETX /?" ou "SETX -i"
Dans ton cas, tu vas voir que c'est TRÈS SIMPEL à résoudre :
1) Générer un fichier texte contenant le résultat de la commande "Route
print" :
C:WINDOWSsystem32>route print >route.txt
2) Analyser (une fois pour toute) ce fichier pour énumérer
tous les "groupes" de caractères :
C:WINDOWSsystem32>setx TOTO -f route.txt -x
Commentaires :
"setx" exige dans tous les cas en paramètre le nom d'une variable
d'environnement, même si elle n'en a pas besoin.
Le nom "TOTO" est un nom quelconque (il ne sert à rien ici)
On aurait pu écrire "setx DUSCHMURZ -f route.txt -x"
Cela affiche la liste suivante (exemple obtenu chez moi. NB :j'ai
élagué!)
(0,0 ======================================....
(1,0 Liste) (1,1 d'Interfaces)
(2,0 0x1) (2,1 ...........................) (2,2 MS) (2,3 TCP) (2,4
Loopback) (2
,5 interface)
(3,0 0x2) (3,1 ...00) (3,2 0d) (3,3 61) (3,4 19) (3,5 3a) (3,6 f4) (3,7
......)
(3,8 Intel(R)) (3,9 PRO/100) (3,10 VE) (3,11 Network) (3,12 Connection)
(3,13 -)
.....
(18,4 1)
(19,0 Passerelle) (19,1 par) (19,2 défaut :) (19,3 192.168.0.2)
...
Pas très clair au premier abord, mais on voit quand même que ce qui est
intéressant (l'adresse de passerelle) se trouve en (19,3)
(19ème ligne, 3ème groupe) :
(19,3 192.168.0.2)
On pourrait donc demander à SETX de chercher le groupe (19,3),
mais cela ne serait pas universel (le n° de ligne dépend du nombre
de cartes réseau)
On va donc raisonner e relatif, par rapport à la chaine "Passerelle"
L'adresse IP est sur la même ligne que la chaine "Passerelle",
et est située à 3 groupes de distance
-> 0,3 de coordonnées relatives
3) Extraire directement dans une variable d'environnement ce groupe :
(j'ai appelé cette variable "GATEWAY")
C:WINDOWSsystem32>setx GATEWAY -f route.txt -r 0,3 "Passerelle"
-m
Extracted value is: 192.168.0.2
NB : le switch "-m" est facultatif; Il sert à placer la variable dans
le contexte machine, et non pas user :
HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment
au lieu de
HKCUEnvironment
Ca a l'air pas mal, mais question conne, comment est deffini la variable dans
une ligne de commande ?
par exemple pour moi
route add blabla mask blabla %GATEWAY
bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find /i
"passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a dire
recuperé que l'adresse IP, pour ensuite pouvoir faire un set et pouvoir
mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette variable
pour pouvoir faire cette route.
merci
bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find /i
"passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a dire
recuperé que l'adresse IP, pour ensuite pouvoir faire un set et pouvoir
mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette variable
pour pouvoir faire cette route.
merci
bonjour,
Dans un script batch, je souhaite faire cela :
route add IP1 mask 255.255.255.255 IP_PASSERELLE
route change 0.0.0.0 mask 0.0.0.0 IP1
Cependant, mon IP_PASSERELLE est dynamique,
sous batch, je suis arrivé au maximum a faire un "route print | find /i
"passerelle par""
ce qui me sort
C:>route print | find /I "passerelle par"
Passerelle par défaut : 192.168.0.1
C:>
maintenant, je souhaite enlevé tout ce qui est avant le :, c'est a dire
recuperé que l'adresse IP, pour ensuite pouvoir faire un set et pouvoir
mettre cette variable dans ma ligne de commmande route add.
avec bash sous linux, la commande serais tail ou awk, cependant, cela
n'existe pas sous windows, auriez vous une idée de comment set cette variable
pour pouvoir faire cette route.
merci