Récupérer une info d'un . txt pour un .bat
stratoflav
Messages postés
55
Date d'inscription
Statut
Membre
Dernière intervention
-
stratoflav Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
stratoflav Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'essai d'automatiser l'accès du bureau à distance via un batch.
Je m'explique, j'ai un "menu.bat" avec lequel je souhaite lancer des fichiers .rdp (bureau à distance)
Si je fais le choix de connexion, je demande le nom d'un lieu. Il va chercher le nom dans un fichier texte, s'il le trouve, il execute le fichier .rdp
S'il ne le trouve pas, il demande à l'ajouter dans le fichier texte et lance un fichier Default.rdp à modifier et enregistrer.
Seulement lorsque j'execute mon batch, même si le nom est présent dans le fichier texte, il m'indique que le nom n'existe pas et me demande si je veux l'ajouter.
Pourriez-vous me donner une piste siouplait.
Voici le code
...
:choice
set /p choice=Choisir l'option :
echo.
if '%choice%'=='1' goto bad
if '%choice%'=='2' goto ajout
if '%choice%'=='3' goto suppression
if '%choice%'=='4' goto fin
echo Le choix "%choice%" n'est pas valide !!
echo.
goto choice
:bad
echo.
set /p apc=Entrer le nom de l'APC :
for /f "delims=" %%a in (liste.txt) do (
if '%%a'=='%apc%' goto exec
if not '%%a'=='%apc%' goto error )
:exec
APC\%apc%.rdp"
:error
cls
echo Le nom "%apc%" n'est pas present dans la liste
echo.
set /p reponse=Voulez-vous l'ajouter ? [O/N] :
echo.
if not '%reponse%'=='O' goto menu
:ajout
set /p nomajout=Entrer le nom de l'APC a ajouter :
echo %nomajout% >> liste.txt
pause
cls
goto menu
...
j'essai d'automatiser l'accès du bureau à distance via un batch.
Je m'explique, j'ai un "menu.bat" avec lequel je souhaite lancer des fichiers .rdp (bureau à distance)
Si je fais le choix de connexion, je demande le nom d'un lieu. Il va chercher le nom dans un fichier texte, s'il le trouve, il execute le fichier .rdp
S'il ne le trouve pas, il demande à l'ajouter dans le fichier texte et lance un fichier Default.rdp à modifier et enregistrer.
Seulement lorsque j'execute mon batch, même si le nom est présent dans le fichier texte, il m'indique que le nom n'existe pas et me demande si je veux l'ajouter.
Pourriez-vous me donner une piste siouplait.
Voici le code
...
:choice
set /p choice=Choisir l'option :
echo.
if '%choice%'=='1' goto bad
if '%choice%'=='2' goto ajout
if '%choice%'=='3' goto suppression
if '%choice%'=='4' goto fin
echo Le choix "%choice%" n'est pas valide !!
echo.
goto choice
:bad
echo.
set /p apc=Entrer le nom de l'APC :
for /f "delims=" %%a in (liste.txt) do (
if '%%a'=='%apc%' goto exec
if not '%%a'=='%apc%' goto error )
:exec
APC\%apc%.rdp"
:error
cls
echo Le nom "%apc%" n'est pas present dans la liste
echo.
set /p reponse=Voulez-vous l'ajouter ? [O/N] :
echo.
if not '%reponse%'=='O' goto menu
:ajout
set /p nomajout=Entrer le nom de l'APC a ajouter :
echo %nomajout% >> liste.txt
pause
cls
goto menu
...
A voir également:
- Récupérer une info d'un . txt pour un .bat
- Creer un fichier .bat - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Comment récupérer un compte facebook piraté - Guide
- Crystal disk info - Télécharger - Informations & Diagnostic
- Info pc - Guide
4 réponses
Je vois pas comment ce script peut marcher si tu ne boucle pas ta boucle ...
for /f "delims=" %%a in (liste.txt) do ( ) Débute une boucle qui liste le fichier liste.exe
Dans cette boucle tu l'envoi dans :exec ou :error et ensuite tu l'envoi retourner au menu, ca ne peut pas fonctionner.
Que contient exactement liste.txt ??
for /f "delims=" %%a in (liste.txt) do ( ) Débute une boucle qui liste le fichier liste.exe
Dans cette boucle tu l'envoi dans :exec ou :error et ensuite tu l'envoi retourner au menu, ca ne peut pas fonctionner.
Que contient exactement liste.txt ??
Il te faudrait un code dans ce genre là :
... @echo off :menu cls echo. echo 1. APC echo 2. Ajout echo 3. Suppr echo 4. Liste echo 5. Exit echo ----------- set /p choice=Choisir l'option : echo. if '%choice%'=='1' goto apc if '%choice%'=='2' goto ajout if '%choice%'=='3' goto suppr if '%choice%'=='4' more liste.txt &echo.&echo Veuillez presser une touche ...&pause>nul&goto menu if '%choice%'=='5' exit echo Veuillez pressez une touche entre 1 et 5 ... pause>nul goto menu exit :apc echo. set /p apc=Entrer le nom de l'APC : for /f "delims=" %%a in ('type liste.txt ^| find "%apc%"') do call :exec echo Le nom "%apc%" n'est pas present dans la liste echo. set /p reponse=Voulez-vous l'ajouter ? [O/N] : if /i '%reponse%'=='n' goto menu echo %apc%>>liste.txt goto menu :exec APC\%apc%.rdp pause goto menu :ajout set /p nomajout=Entrer le nom de l'APC a ajouter, [CTRL+C] pour annuler : echo %nomajout%>>liste.txt goto menu :suppr pause goto menu ...
Merci beaucoup pour ton aide.
Le fichier liste.txt contiendra soit les nom des villes / villages, soit leur Code unique à 6 chiffres.
Je regarderai ton code demain si j'ai le temps. Je te tiens au courant.
Je savais que ca venait de la boucle qui n'était pas correct, c'est souvent le cas dans mes algo aussi ;)
Cordialement
Le fichier liste.txt contiendra soit les nom des villes / villages, soit leur Code unique à 6 chiffres.
Je regarderai ton code demain si j'ai le temps. Je te tiens au courant.
Je savais que ca venait de la boucle qui n'était pas correct, c'est souvent le cas dans mes algo aussi ;)
Cordialement
Bonjour,
je te remercie, cela fonctionne très bien mais je voudrais une ou deux petites explication s'il te plait.
Tout d'abord, peux tu m'expliquer plus précisément la ligne de la boucle
for /f "delims=" %%a in ('type liste.txt ^| find "%apc%"') do call :exec
merci pour l'astuce du "&" permettant de mettre plusieurs commande sur une même ligne. Au passage, tu connais de bon tuto pour le batch ?
Ensuite, je sors un peu du contexte de mon script mais je me rend compte que cela ne sert a rien ma liste avec un dossier contenant un fichier .rdp par bureau. Puisque le bureau se connecte à mon serveur via une liaison VPN et qu'il attribut toujours la même ip à n'importe quel poste (jamais plusieurs connexion en même tps), un seul fichier .rdp est nécessaire. La liste devient alors superflu. Qu'en penses tu ?
Merci encore
je te remercie, cela fonctionne très bien mais je voudrais une ou deux petites explication s'il te plait.
Tout d'abord, peux tu m'expliquer plus précisément la ligne de la boucle
for /f "delims=" %%a in ('type liste.txt ^| find "%apc%"') do call :exec
merci pour l'astuce du "&" permettant de mettre plusieurs commande sur une même ligne. Au passage, tu connais de bon tuto pour le batch ?
Ensuite, je sors un peu du contexte de mon script mais je me rend compte que cela ne sert a rien ma liste avec un dossier contenant un fichier .rdp par bureau. Puisque le bureau se connecte à mon serveur via une liaison VPN et qu'il attribut toujours la même ip à n'importe quel poste (jamais plusieurs connexion en même tps), un seul fichier .rdp est nécessaire. La liste devient alors superflu. Qu'en penses tu ?
Merci encore