DOS - mettre resultat d'une commande dans variable

DOS - mettre resultat d'une commande dans variable - Shell/Batch - Programmation

Marsh Posté le 11-10-2005 à 10:59:19    

Bonjour,
 
j'essaie depuis hier de mettre le resultat d'une commande dans une variable (invitre de commande DOS sous windows xp mais il faudrait que ca marche aussi sous 2000 et nt)
j'ai essayé la commande set. ca donne ca:
 
set NOM_VARIABLE=nslookup NOM_PC|find "Address"|more +1
 
la variable n'est pas créée...
 
une idée ?! en sachant que le resultat de la commande normale retourne :
Address : 10.XX.XX.XX
et que je voudrais à terme n'avoir que l'adresse IP dans la variable (sans le "Address" )
 
merci d'avance


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 11-10-2005 à 10:59:19   

Reply

Marsh Posté le 11-10-2005 à 14:29:38    

Tu peux rediriger la sortie dans un fichier temporaire puis récupérer le contenu de celui-ci. La syntaxe que tu as utilisée n'est pas acceptée.

Reply

Marsh Posté le 11-10-2005 à 14:50:17    

merci c'est effectivement ce que je comptais faire...
nslookup NOM_PC|find "Address"|more +1 > c:\toto
 
comment on recupere ce que contient un fichier dans une variable par contre ?
set VAR= ???
 
encore merci


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 11-10-2005 à 15:16:19    

set /p VAR=<c:\toto

Reply

Marsh Posté le 11-10-2005 à 15:35:22    

merci


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 12-10-2005 à 12:25:16    

petite question sans rapport comment faire pour passer des caractères comme é ou è dans un batch.
j'essaie de copier des fichiers dans c:\documents and settings\XX\Menu démarrer par exemple mais je me fais jeter parce que j'ai a l'execution du script un ù à la place du é...


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 12-10-2005 à 13:34:58    

Tu as deux méthodes :
- passer par leur nom court :
MENUDM~1
 
- rédiger ton script dans Wordpad ou un éditeur qui supporte la conversion ANSI-OEM (PowerBatch entre autres). Avec Wordpad, après la rédaction, Enregistrer sous --> fichier DOS.
(garde toujours la version ANSI en backup.)

Reply

Marsh Posté le 12-10-2005 à 14:00:02    

MERCI !!!


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 12-10-2005 à 14:42:21    

je suis maudis ou alors la commande
set /p VAR=<c:\toto
ne marche pas sous win NT ???
apparement le commutateur /P n'existait pas sous NT. si tel est le cas, y a t il un moyen de contourner ce probleme (sous NT donc)??
 
euh... merci ?! (oui je sais je me repete! lol)


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 12-10-2005 à 17:25:59    

Ah ok, je ne connais pas NT désolée.
 
Tu peux faire donc une boucle for pour récupérer la ligne, à moins que quelqu'un qui s'y connaisse mieux puisse te renseigner ;)

Reply

Marsh Posté le 12-10-2005 à 17:25:59   

Reply

Marsh Posté le 12-10-2005 à 19:11:38    

Je viens de tenter, et, sous Win2000, ca passe très bien, le set /P

Reply

Marsh Posté le 13-10-2005 à 09:26:41    

bon après quelques heures de reflections  :pt1cable:  :pt1cable:  j'ai trouvé la solution "ultime" à mon probleme
je donne ma commande si ca peut aider qqn un jour (ça m étonnerait mais bon ...  :??: )
 
for /F "tokens=2 delims= " %%i in ('"nslookup NOM_PC | find "Address" | more /E +1"') do set VAR=%%i
 
voilà ca marche sous NT/2000/XP et ca fait ce que je voulais sans meme devoir créer un fichier temporaire.
 
encore merci pour ton aide MONSIEUR (ca s'impose!) nglechau :jap:  
 
@+


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 13-10-2005 à 09:28:05    

theshockwave a écrit :

Je viens de tenter, et, sous Win2000, ca passe très bien, le set /P


 
oui sous 2000 et XP ca marchait... pas sous NT ! vive l'homogénéité des parc infos !!!


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 13-10-2005 à 11:27:25    

bon ... le DOS c'est sympa mais je galere sur autre chose maintenant ! lol
 
pourquoi quand je fais :
@for /F %%i in (liste.txt) do @echo %%i
ca marche ?!
alors que si je remplace echo par ping:
@for /F %%i in (liste.txt) do @ping %%i
ca ne marche plus !!! ma fenetre dos se ferme et si j'essaie de rediriger la sortie dans un fichier j'ai une erreur qui dit que la memoire tampon est pleine....
j'ai essayé avec nslookup ca marche!
 
une idée ?!


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 13-10-2005 à 15:28:50    

golum666 a écrit :

for /F "tokens=2 delims= " %%i in ('"nslookup NOM_PC | find "Address" | more /E +1"') do set VAR=%%i


Merci :jap:


Pourquoi ? :??:

golum666 a écrit :

si j'essaie de rediriger la sortie dans un fichier j'ai une erreur qui dit que la memoire tampon est pleine....


Ton fichier contient combien d'entrées ? Tu as essayé de jouer avec les params -n et -w ?
 

Reply

Marsh Posté le 13-10-2005 à 15:37:58    

ca s'impose parce que tu m'as bien aidé!
 
sinon pour la suite de mon probleme ce rendre là : lol
 
http://forum.hardware.fr/hardwaref [...] 3543-1.htm
 
@+


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 13-10-2005 à 15:42:33    

Euh, dans deux posts tu mentionnes deux erreurs différentes.

Reply

Marsh Posté le 13-10-2005 à 15:45:03    

sur l'autre post c'est là ou j'en suis actuellement ;)


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 13-10-2005 à 15:49:16    

Oki ;) Je viens de t'y répondre.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed