Bonjour, Comment faire un petit batch qui sort aléatoirement une ligne d'un fichier texte (un mot par ligne dans le txt)?
Merci a+
Bonjour, Comment faire un petit batch qui sort aléatoirement une ligne d'un fichier texte (un mot par ligne dans le txt)?
Merci a+
Comme ça :Le batch est directement utilisable, et envoie une ligne aléatoire du fichier passé en paramètre sur la sortie standard.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 @echo off setlocal enableextensions if "%1"=="" goto help REM Compter le nombre de lignes avant tout. set nblines=0 for /F "delims=" %%I in ('type %1') do set /a nblines+=1 REM Récupérer une ligne au hasard (random modulo nombre de lignes du fichier). set /a line=%RANDOM% %% %nblines% REM Parcours du fichier d'origine, en sautant "line" lignes. for /F "skip=%line% delims=" %%I in ('type %1') do ( REM Sortie de la ligne. echo %%I REM Arrêt de la boucle, pour ne pas sortir les lignes suivantes. goto :break ) :break goto :eof :help echo Syntax : %0 ^<File^> echo Will extract a random line from the file. goto :eof
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
Merci mais peux tu me dire stp ou est ce qu'on indique le nom du fichier txt?
Merci a+
Sur la ligne de commande, c'est le paramètre "%1" dans le batch...
Tu devrais lire un cours sur le batch, j'ai l'impression qu'il te manque quelques bases qui te seraient utiles et, surtout, qui te permettraient d'avancer plus facilement.
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
Merci Mak Lak, mais ton code est un peu trop compliqué pour moi
Je vais me contenter de celui-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 @echo off set numeroDeLigne=%RANDOM%%%7 set fichier=line.txt :- find /n /v "" %fichier%|find "[%numeroDeLigne%]">^^&set/pMOT=<^^&del ^^ set MOT=%MOT:*]=% echo %MOT% pause
Entre nous le code de Mac est beaucoup plus simple que celui que tu proposes.
Et je doute que tu comprennes ce dernier si tu ne comprends pas celui de Mac.
Surtout que ton code nécessite de connaître le nombre de lignes du fichier à l'avance. Combine au moins les deux codes pour palier à cela.
Aussi ton code ne fonctionne pas en l'état, il manque un /a au premier set.
Et ajoute un setlocal après le echo off pour que ta variable MOT ne persiste pas à la fin de ton script.
Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.
La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.
(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant
Salut,
1-Le code de MacLak est plus simple, mais je ne comporend rien aux %1 %%I.
2-Si, si j'ai compris le code que j'ai cité grace a quelques explications:
3-Oui merci, il manque un /afind /n /v ""
on cherche toutes les lignes y compris les vides et on mets devant chaque ligne trouvé un identifiant [x] , "x" étant un nombre allant de 1 à N
find "[%numeroDeLigne%]" on match le numéro choisi par la variable %numeroDeLigne%
la sortie sera:
Code :
[4]texte
cette valeur sera rediriger vers un fichier de sortie qu'on va lire et on va sauvegardé son contenu dans la variable MOT
set MOT=%MOT:*]=% on supprime tous les caractères avant le signe ] y compris celui-ci
la sortie sera alors:
Code :
texte
__________________
4-Setlocal Ok merci je vais l'ajouter
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
ça y est merci beaucoup j'ai réussi a le faire fonctionner !
(j'étais allé dans le tuto mais je ne trouvais pas %%I et %1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 @echo off setlocal enableextensions if "ENTREE.TXT"=="" goto help REM Compter le nombre de lignes avant tout. set nblines=0 for /F "delims=" %%I in ('type ENTREE.TXT') do set /a nblines+=1 REM Récupérer une ligne au hasard (random modulo nombre de lignes du fichier). set /a line=%RANDOM% %% %nblines% REM Parcours du fichier d'origine, en sautant "line" lignes. for /F "skip=%line% delims=" %%I in ('type ENTREE.TXT') do ( REM Sortie de la ligne. echo %%I REM Arrêt de la boucle, pour ne pas sortir les lignes suivantes. goto :break ) :break goto :eof :help echo Syntax : SORTIE.TXT ^<File^> echo Will extract a random line from the file. goto :eof
PS: je me suis permis de remplacer tes %1 par ENTREE.TXT, donc j'espère que ça ne te dérange pas
T'as pas beaucoup cherché :
- http://windows.developpez.com/cours/...e_24#LXXIV-B-1
- http://windows.developpez.com/cours/...=page_26#LXXVI
- http://www.microsoft.com/resources/d....mspx?mfr=true
Tous ces liens sont tirés du cours que j'ai linké précédemment. Dans un cours, faut tout lire, et non pas survoler et/ou se contenter de chercher un mot-clé dedans...
Tu pouvais tout simplement prendre mon batch (disons nommé "getrandomline.bat") et taper ceci dans ton batch appelant :Cela faisait très exactement la même chose, tu l'aurais su en créant ce batch et en tentant de l'exécuter, vu qu'il intègre une aide en ligne. Je te l'ai dit : ce batch est directement utilisable, et sort une ligne aléatoire du fichier passé en paramètre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part call getrandomline ENTREE.TXT
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
Oui, je l'avais seulement survolé
Ok merci pratiqueTu pouvais tout simplement prendre mon batch (disons nommé "getrandomline.bat") et taper ceci dans ton batch appelant :Cela faisait très exactement la même chose, tu l'aurais su en créant ce batch et en tentant de l'exécuter, vu qu'il intègre une aide en ligne. Je te l'ai dit : ce batch est directement utilisable, et sort une ligne aléatoire du fichier passé en paramètre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part call getrandomline ENTREE.TXT
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager