A voir également:
- Batch lire fichier ligne par ligne
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Fichier rar - Guide
- Aller à la ligne excel - Guide
- Apparaitre hors ligne instagram - Guide
- Vente en ligne particulier - Guide
13 réponses
slt re
Code amélioré un peu :
* L'existante du fichier f1.txt est vérifié ; sortie si le fichier n'existe pas
* Le nombre des lignes dans f1.txt est récupéré automatiquement
* Vous pouvez choisir le numéro de ligne quand la question s'affiche
* Répondre 0 (zéro) vous fera sortir du programme
Pensez à changer le chemin pour le fichier et le nom ...
Astuce :
Utilisez la police "Lucida Console" dans le Bloc-notes Windows !
Cela permet de voir le texte comme dans l'invite de commandes :))
Les dessins restent avec les caractères spéciaux (...) ; pas de dessins.
"Lucida Console", Normal, 10, Occidental ...
Enregistrez au format Ansi (par défaut), sinon ça bug ; essayez Unicode.
/!\ Les fichiers pour le registre ".reg" sont en Unicode par contre.
merci
Code amélioré un peu :
* L'existante du fichier f1.txt est vérifié ; sortie si le fichier n'existe pas
* Le nombre des lignes dans f1.txt est récupéré automatiquement
* Vous pouvez choisir le numéro de ligne quand la question s'affiche
* Répondre 0 (zéro) vous fera sortir du programme
@echo off cls setlocal enableextensions enabledelayedexpansion :debut set afflign= set compt= If not exist "C:\Development Folder\Scripts\Nouveau dossier\f1.txt" ( echo Le fichier n'existe pas echo fin echo. goto fin ) for /f "delims=" %%i in ('type "C:\Development Folder\Scripts\Nouveau dossier\f1.txt"') do set /a compt+=1 rem !!!!!!!!!!! Quelle numero de ligne (0 (quit) to %compt%) ?1SpaceHere set /p afflign= Quelle numero de ligne (0 (quit) to %compt%) ? if "%afflign%"=="0" goto fin for /f "tokens=1,* delims=:" %%a in ('findstr /n /r . "C:\Development Folder\Scripts\Nouveau dossier\f1.txt" ^| findstr "^%afflign%:"') do ( set l=%%b echo !l! ) goto debut :fin endlocal echo. echo Sortie ... echo. pause exit /B
Pensez à changer le chemin pour le fichier et le nom ...
Astuce :
Utilisez la police "Lucida Console" dans le Bloc-notes Windows !
Cela permet de voir le texte comme dans l'invite de commandes :))
Les dessins restent avec les caractères spéciaux (...) ; pas de dessins.
"Lucida Console", Normal, 10, Occidental ...
Enregistrez au format Ansi (par défaut), sinon ça bug ; essayez Unicode.
/!\ Les fichiers pour le registre ".reg" sont en Unicode par contre.
merci
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
1 nov. 2009 à 09:32
1 nov. 2009 à 09:32
si je veux la troisième ligne :
C:>\ type f1.txt Comparaison des fichiers image1.jpg et IMAGE2.JPG 0000000C: 02 01 00000015: ED E1 00000016: 09 07 00000017: 6A DE 00000018: 50 45 00000019: 68 78 0000001A: 6F 69 0000001B: 74 66 0000001C: 6F 00 FC : IMAGE2.JPG est plus long que image1.jpg C:>\ findstr /n "^" f1.txt | findstr "^3:" 3:00000015: ED E1
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
1 nov. 2009 à 08:56
1 nov. 2009 à 08:56
hello
C:>\ type f1.txt mon ami 1809398 kbu@gmail.com http://www.monamiskuku.net/aymizi Code Binaire de son ordinateur 1010111001010100111 [Ect] C:>\ for /F "delims=" %a in ('type f1.txt') do @echo %a mon ami 1809398 kbu@gmail.com http://www.monamiskuku.net/aymizi Code Binaire de son ordinateur 1010111001010100111 [Ect]
Merci quand même !
Disons que je veux choisir la ligne X.
Pour l'exemple c'était peut être pas ... disons pratique.
Voilà mon vrai fichier (Une partie) :
Et je veux faire une boucle pour retrouver la ligne X.
1 = Comparaison des fichiers image1.jpg et IMAGE2.JPG
2 = 0000000C: 02 01
[ect]
Merci !
Disons que je veux choisir la ligne X.
Pour l'exemple c'était peut être pas ... disons pratique.
Voilà mon vrai fichier (Une partie) :
Comparaison des fichiers image1.jpg et IMAGE2.JPG 0000000C: 02 01 00000015: ED E1 00000016: 09 07 00000017: 6A DE 00000018: 50 45 00000019: 68 78 0000001A: 6F 69 0000001B: 74 66 0000001C: 6F 00 FCÿ: IMAGE2.JPG est plus long que image1.jpg
Et je veux faire une boucle pour retrouver la ligne X.
1 = Comparaison des fichiers image1.jpg et IMAGE2.JPG
2 = 0000000C: 02 01
[ect]
Merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ok merci !
Seulement comment enregistre t-on la commande dans la variable "msg" ?
Le code en haut ne marche pas
Et puis c'est bizard ton code, on est obliger de mettre X:"la valeur de la ligne X" ?
Enfin ça encore ... ça peut passer.
Comme suis :
Merci !
Seulement comment enregistre t-on la commande dans la variable "msg" ?
set msg=findstr /n "^" f1.txt | findstr "^3:"
Le code en haut ne marche pas
Et puis c'est bizard ton code, on est obliger de mettre X:"la valeur de la ligne X" ?
Enfin ça encore ... ça peut passer.
Comme suis :
set msg=%msg:%X%:=%
Merci !
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
2 nov. 2009 à 08:00
2 nov. 2009 à 08:00
DOS est très limité, j'utilise la numérotation des lignes par findstr pour trouver la ligne 3, on pourrait aussi le faire avec un compteur.
pour supprimer le No de ligne et mettre la ligne dans une variable:
for /f "delims=: tokens=1,*" %%a in ('findstr /n "^" f1.txt ^| findstr "^3:"') do (
set l=%%b
echo %l%)
pour supprimer le No de ligne et mettre la ligne dans une variable:
for /f "delims=: tokens=1,*" %%a in ('findstr /n "^" f1.txt ^| findstr "^3:"') do (
set l=%%b
echo %l%)
Bonjour, le prototype ne marche pas. Et puis pour les retours à la lignes c'est pas commode non plus.
Le prototype de retour à la ligne marche ailleurs sauf sur mon programme :(
Merci bien !!! Je vais essayer de le réparer
Le prototype de retour à la ligne marche ailleurs sauf sur mon programme :(
Merci bien !!! Je vais essayer de le réparer
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
4 nov. 2009 à 07:34
4 nov. 2009 à 07:34
je n'ai rien compris
Je voulais dire que
Ne marche pas ! Tu es sur du code ?
for /f "delims=: tokens=1,*" %%a in ('findstr /n "^" f1.txt ^| findstr "^3:"') do ( set l=%%b echo %l%)
Ne marche pas ! Tu es sur du code ?
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
10 nov. 2009 à 09:09
10 nov. 2009 à 09:09
Ca m'affiche bien la ligne 3
C:> type f1.txt Comparaison des fichiers image1.jpg et IMAGE2.JPG 0000000C: 02 01 00000015: ED E1 00000016: 09 07 00000017: 6A DE 00000018: 50 45 00000019: 68 78 0000001A: 6F 69 0000001B: 74 66 0000001C: 6F 00 FC : IMAGE2.JPG est plus long que image1.jpg C:> aa 00000015: ED E1 C:> type aa.bat @echo off for /f "delims=: tokens=1,*" %%a in ('findstr /n "^" f1.txt ^| findstr "^3:"') do ( set l=%%b echo %l%)
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
14 nov. 2009 à 09:39
14 nov. 2009 à 09:39
tu as bien mis la même lettre:
essaye
set A=%%b
echo %A%)
essaye
set A=%%b
echo %A%)
slt
Windows 7 x64 ; si le code ne fonctionne pas c'est qu'il manque l'option :
setlocal enabledelayedexpansion
Commande ECHO désactivée. = la variable "l" est vide ET était vide.
La commande echo sans rien affiche l'état de echo ...
"Sans le "setlocal enabledelayedexpansion", la modification du contenu d'une variable dans une boucle if n'a pas d'effet. Cela s'applique à tous les blocs d'instructions." On peut faire un call :processexterne %%x (comme un goto, pas un fichier, ":" devant la balise) pour passer outre (sauf erreur, je viens de le lire dans l'un des 40 onglets ouverts).
ÉDIT : echo %l% doit être echo !l! mais ça semble pareil en l'état.
"Les variables d'environnement comme "l" devront obligatoirement être encadrées du caractère "!" à la place du caractère "%" pour que l'interpréteur de commandes %comspec% (i.e. cmd.exe) sache gérer cette situation. Il faut donc considérer l'expansion retardée comme une lecture séquentielle du fichier batch. Ce mode de fonctionnement est à priori le plus naturel. Nous sommes invités donc à toujours activer cette option."
(( On rencontre de plus en plus souvent dans des textes français les mystérieuses abréviations i.e. et e.g., utilisées respectivement au sens de « c'est-à-dire » et de « par exemple ». Je ne savais pas trop cela et ça complique donc la lecture : Source ; http://www.druide.com/points_de_langue_16.html ))
(( Réponse Rotation variables en batch, entraide, FAQ, conseils, avis, Scripting Microsoft, Développement :
http://www.generation-nt.com/reponses/rotation-variables-batch-entraide-3336831.html ))
Et le message "FINDSTR : Impossible d'ouvrir f1.txt" veut dire :
* Que le fichier n'est pas présent ; ce n'est donc pas une erreur d'ouverture.
* Il faut entourer le chemin avec des guillemets et mettre le chemin complet.
* Les guillemets sont à priori obligatoires si le chemin contient des espaces.
Le code dans aa.bat qui affiche bien "00000015: ED E1" :))
Vous pouvez remplacer "findstr /n "^"" par "findstr /n /r ." :))
les quotes ICI sont faites avec la touche 4 ; c'est pas l'accent grave ALTGr+7
la variable "l", L minuscule, n'est pas du tout facilement lisible (...)
le fichier f1.txt est le même que plus haut
(pas de ligne vide à la fin dans les 2 fichiers)
je suis venu là car je cherche sur le web des infos pour un sujet avec moi ici :
Bat dos variable dans find ne marche pas help [Résolu] | CommentCaMarche :
http://www.commentcamarche.net/forum/affich-24365520-bat-dos-variable-dans-find-ne-marche-pas-help#4 (post #4 ; le dernier pour l'instant)
merci
Windows 7 x64 ; si le code ne fonctionne pas c'est qu'il manque l'option :
setlocal enabledelayedexpansion
Commande ECHO désactivée. = la variable "l" est vide ET était vide.
La commande echo sans rien affiche l'état de echo ...
"Sans le "setlocal enabledelayedexpansion", la modification du contenu d'une variable dans une boucle if n'a pas d'effet. Cela s'applique à tous les blocs d'instructions." On peut faire un call :processexterne %%x (comme un goto, pas un fichier, ":" devant la balise) pour passer outre (sauf erreur, je viens de le lire dans l'un des 40 onglets ouverts).
ÉDIT : echo %l% doit être echo !l! mais ça semble pareil en l'état.
"Les variables d'environnement comme "l" devront obligatoirement être encadrées du caractère "!" à la place du caractère "%" pour que l'interpréteur de commandes %comspec% (i.e. cmd.exe) sache gérer cette situation. Il faut donc considérer l'expansion retardée comme une lecture séquentielle du fichier batch. Ce mode de fonctionnement est à priori le plus naturel. Nous sommes invités donc à toujours activer cette option."
(( On rencontre de plus en plus souvent dans des textes français les mystérieuses abréviations i.e. et e.g., utilisées respectivement au sens de « c'est-à-dire » et de « par exemple ». Je ne savais pas trop cela et ça complique donc la lecture : Source ; http://www.druide.com/points_de_langue_16.html ))
(( Réponse Rotation variables en batch, entraide, FAQ, conseils, avis, Scripting Microsoft, Développement :
http://www.generation-nt.com/reponses/rotation-variables-batch-entraide-3336831.html ))
Et le message "FINDSTR : Impossible d'ouvrir f1.txt" veut dire :
* Que le fichier n'est pas présent ; ce n'est donc pas une erreur d'ouverture.
* Il faut entourer le chemin avec des guillemets et mettre le chemin complet.
* Les guillemets sont à priori obligatoires si le chemin contient des espaces.
Le code dans aa.bat qui affiche bien "00000015: ED E1" :))
@echo off cls setlocal enableextensions enabledelayedexpansion for /f "delims=: tokens=1,*" %%a in ('findstr /n "^" "C:\Development Folder\Scripts\Nouveau dossier\f1.txt" ^| findstr "^3:"') do ( set l=%%b echo !l! ) endlocal exit /B
Vous pouvez remplacer "findstr /n "^"" par "findstr /n /r ." :))
les quotes ICI sont faites avec la touche 4 ; c'est pas l'accent grave ALTGr+7
la variable "l", L minuscule, n'est pas du tout facilement lisible (...)
le fichier f1.txt est le même que plus haut
Comparaison des fichiers image1.jpg et IMAGE2.JPG 0000000C: 02 01 00000015: ED E1 00000016: 09 07 00000017: 6A DE 00000018: 50 45 00000019: 68 78 0000001A: 6F 69 0000001B: 74 66 0000001C: 6F 00 FC : IMAGE2.JPG est plus long que image1.jpg
(pas de ligne vide à la fin dans les 2 fichiers)
je suis venu là car je cherche sur le web des infos pour un sujet avec moi ici :
Bat dos variable dans find ne marche pas help [Résolu] | CommentCaMarche :
http://www.commentcamarche.net/forum/affich-24365520-bat-dos-variable-dans-find-ne-marche-pas-help#4 (post #4 ; le dernier pour l'instant)
merci