[BATCH] Recherche dans un fichier texte

Recherche dans un fichier texte [BATCH] - Shell/Batch - Programmation

Marsh Posté le 03-06-2012 à 01:47:44    

Bonjour à tous,
 
Je vous expose mon problème :
 
J'ai un fichier texte (liste.txt) qui contient des noms de machines et l'adresse IP associée présenté de cette façon :
 

Code :
  1. M012345:192.168.1.1
  2. (M0 étant commun à toutes les machines).

 
 
Mon but est de me connecter à la machine par VNC grâce à un batch qui va récupérer l'adresse IP liée au nom de la machine dans ma liste.
 
Pour ce qui est de la commande pour VNC c'est bon :

Code :
  1. @echo off
  2. "C:\...\vncviewer.exe" 192.168.1.1::port /password monmotdepasse
  3. (le mot de passe et le port sont également communs à toutes les machines)

 
 
En revanche j'ai parcouru tous les forums possibles et imaginables mais je n'ai pas trouvé de solution pour me connecter à la machine via mon batch en tapant le nom de machine, en clair:
Je lance mon batch > je lui donne mon nom de machine > il va chercher le nom de machine dans liste.txt > il récupère l'IP correspondante > et enfin il exécute la commande pour la connexion VNC avec l'IP récupérée.
 
J'ai déjà essayer plusieurs formules mais là j'avoue que je bloque. :sweat:  
 
J'espère que que c'est compréhensible parce que ça part un peu dans tous les sens.  :lol:  
 
Si vous voulez je peux vous poster ce que j'ai tenté sans succès..
 
Merci par avance à tous  :)


Message édité par vodkazzz le 03-06-2012 à 01:49:48
Reply

Marsh Posté le 03-06-2012 à 01:47:44   

Reply

Marsh Posté le 08-12-2012 à 04:44:49    

Il y a bcp plus simple que ce que poste en faisant avec une seule boucle for et un find... mais ce code permet d'afficher toutes les machines dans la même fenêtre et demande de saisir uniquement un nombre. Intéréssant si la liste n'est pas trop longue sinon va falloir ajouter de la mémoire tampon dans ta fenêtre.
J'ai beaucoup commenté mais dans notepad ++ c'est lisible.

 
 
 @echo off
rem renseigner le chemin du fichier list.txt
set ListPath=C:\....\list.txt
 
rem renseigner le chemin de l'application VNC
set VNCPath=C:\...\vncviewer.exe
 
rem Mise en page de l'affichage du fichier list.txt dans la console
rem pour saisie d'un nombre et non le nom du poste pour eviter les erreurs de saisie
rem cette boucle for apelle une etiquette ::SUB en lui affectant un argument récupéré
rem cet argument est en fait le nom du poste

FOR /F "tokens=1 delims=:" %%i IN (%ListPath%) do call ::Sub %%i
 
rem fin de lecture du fichier list.txt
goto END
 
rem -----------------------SUB-----------------------------
rem etiquette qui va faire la mise en page ligne par ligne et atribuer un nombre
rem entre crochet avant le nom de poste à chaque passage

:SUB
set /a a=a+1
Echo [%a%] %1
 
REM fin de l'etiquette sub
rem vous pouvez utiliser cette méthode pour eviter de créer 2 batch pour d'autre programmes

goto :EOF
rem ------------------fin de sub---------------------------
 
:END
rem affichage du nombre total de postes
echo.
echo fin de traitement
echo il y a %a% postes
echo.
rem demande de saisie de la ligne correspondant au poste souhaité
set /p choix=saisir le num‚ro correspondant au poste concern‚ :
 
rem definition de lignes à ignorer en fonction du nombre saisie précedemment
set /a skip=%choix%-1
set skippy=skip=%skip%
if %skip%==0 set skippy=
 
rem attribution des variables "NOM" et "IP"
for /f "tokens=1,2 delims=: %skippy%" %%x in (%ListPath%) do (
set NOM=%%x
set IP=%%y
goto Connexion
)
 
:Connexion
echo Connexion VNC sur le poste : %NOM%  avec adresse IP : %IP%
pause
start "%VNCPath%" %IP%:port /password monmotdepasse
pause


Message édité par vangskyfox le 08-12-2012 à 04:54:07
Reply

Sujets relatifs:

Leave a Replay

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