Recherche dans un fichier texte [BATCH] - Shell/Batch - Programmation
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
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 :
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 :
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.
J'espère que que c'est compréhensible parce que ça part un peu dans tous les sens.
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