Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 4 sur 8
Aller à la page: <  1, 2, 3, 4, 5, 6, 7, 8  >
[Formation]Labougie
Auteur Message
Répondre en citant
Message [Formation]Labougie 
Revue du message précédent :

Salut Laddy,

y m'court ton truc avec For Mr. Green .

Ne me donne pas la soluce, je cherche encore, je vais y arriver tout seul.

Labougie

Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Formation]Labougie 
Salut Laddy,

Il m'a fallu faire plus de lecture que prévu.
J'ai trouvé la réponse dans " la ligne de commande windows et les fichiers batch ".
Ce fût long mais instructif.

voici le code

@echo
for %%A in (toto tata tonton bermuda) do @echo %%A

Le plus difficile est de comprendre la synthaxe car pas de , dans la () de in puis pour cet exemple pas () aprés do sinon les inscriptions sont précédé d'une ligne du type c:\user\labougie\appdata\local\temp

L'inconvénient qui persiste encore dans mon batch c'est que c:\user\...\temp apparait juste devant toto. Et bien sûre je n'arrive pas à l'éliminer.

Merci d'avoir patienté. Okay

labougie



Répondre en citant
Message [Formation]Labougie 
tu as activé la commande ECHO.


Code:

@echo off
for %%A in (toto tata tonton bermuda) do echo %%A
pause



maintenant je veux le même code mais les informations dans un txt




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Salut laddy,



@echo off
for %%A in (toto tata tonton bermuda) do echo %%A >> c:\bouclefor.txt
pause

utilisation de >> pour incrémenter du texte dans le même fichier.
ou
utilisation de > pour écrire une seul fois

pour inscrire du texte avec vista, il faut lancer power batch avec un clic droit " en tant qu'admin " pour que cmd.exe soit lui aussi en mode admin, sinon cela renvoi à " accés refusé ", il est con se vista Mr. Green .



quelle difference entre "@echo" et "echo pause"
appuyer sur une touche pour continuer, c'est tout.

j'ai voulu faire regsrv /? >> c:\ fichierregsrv.txt
cela ne fonctionne pas. Dommage que je doive écrire les interrupteurs à la main car c'est tellement mieux avec l'imprimante.
aurais tu une piste ? stp.

labougie

Citation:

quelle différence entre "@echo" et "echo pause"
appuyer sur une touche pour continuer, c'est tout.

suppression de la ligne c:\ user\...\temp
ok compris



Répondre en citant
Message [Formation]Labougie 
echo pause n'existe pas enfin si echo affichera la mot pause à l'ecran
pause met une pause et dit appuyer sur une touche pour continuer
pause > nul met une pause mais n'affiche pas appuyer sur une touche pour continuer

pour @ je ne sais plus vraiement mais il y une explication dans le tutoriel page 10-11.

Exos
réaliser une boucle for du fichier txt suivant

le fichier test.txt contient les mots suivant

Citation:

toto
tata
tonton
bermuda


Dans une autre boucle
affiche uniquement le mot : toto
affiche uniquement le mot bermuda

Voir l'utilisation : tokens, delimis




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Salut Laddy,

Je sèche un peu sur le coup là.
Voici ce que j'ai fais.
Le 1er fichier txt contient les 4 mots, et je n'arrive pas à mettre uniquement le 1er mot dans le second fichier txt, il y en a toujours 4 Mr. Green .

Aiguille moi sur l'utilisation de tokens et delims, stp.
j'ai beau parcourir le tuto conseillé, la faq win/batch puis for /? mais rien ni fait.


@echo off
for %%A in (toto tata tonton bermuda) do echo %%A >>c:\test.txt
pause
For /f "tokens=1,4 delims= " %%B in ('type c:\test.txt') do echo %%B >>c:\tests1.txt
pause

tokens=1,4 pour le 1er et le 4eme mot => et encore je n'en suis pas certain
delims= ?????



labougie



Répondre en citant
Message [Formation]Labougie 
Code:

tokens= permet de choisir le champ pour l'affichage
delims= permet de definir un delimiteur qui peut etre un espace, une tabulation, :, = ; ! ou autre qui se trouve entre les mots
skip = permet de sauter une ligne
usebackq = me souviens toujours pas
eol= aussi


exemple ton fichier texte contient les mots suivants : toto tata tonton bermuda et ils sont séparés par un espace.

je souhaite afficher uniquement le mot toto
le tokens sera : 1 car c'est le premier champ et le delims sera un espace car c'est ce qui sépare les mots
Code:
@echo off
For /f "tokens=1 delims= " %%B in ('type c:\test.txt') do echo %%B >> c:\tests1.txt
notepad  c:\tests1.txt
pause



Maintenant je souhaites afficher les mots toto et bermuda.

le tokens sera effectivement 1 suivi de 4, le delims sera toujours l'espace par contre pour l'affichage vu que tu veux afficher deux champs il faudra l'ajouter %%B %%C

%%B = CHAMP 1 = toto
%%C = CHAMP 4 = bermuda

Code:
@echo off
For /f "tokens=1,4 delims= " %%B in ('type c:\test.txt') do echo %%B %%C>> c:\tests1.txt
notepad  c:\tests1.txt
pause


Maintenant je veux afficher les 3 premiers champs : toto tata tonton

J'ai deux solutions
tokens 1,2,3 séparé par des virgules toujours un delims avec un espace = affichage du champ 1, du champ 2, du champ 3
ou
tokens 1-3 = AFFICHAGE du champ n°1 à 3°

l'affichage comportera 3 variables : %%B %%C %%D

Code:
@echo off
if exist c:\tests1.txt del c:\tests1.txt
For /f "tokens=1,2,3 delims= " %%B in ('type c:\test.txt') do echo %%B %%C %%D >> c:\tests1.txt
notepad  c:\tests1.txt
pause


Code:
if exist c:\tests1.txt del c:\tests1.txt
For /f "tokens=1-3 delims= " %%B in ('type c:\test.txt') do echo %%B %%C %%D >> c:\tests1.txt
notepad  c:\tests1.txt
pause


Si tu as compris donne moi le code pour afficher tata et bermuda
ainsi que tata, tonton, bermuda.

Essaie de faire la même chose avec un fichier texte contenant ceci :

Code:
toto,titi,tata,tonton,bermuda





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Bonjour laddy,

Voici une info,

elle provient de for /? >> c:\fichierfor.txt sous vista par cmd
les accents ne sont pas gérés.

FOR %variable IN (ensemble) DO commande [paramŠtres]

%variable Sp‚cifie un paramŠtre rempla‡able par une seule lettre.
(ensemble) Ensemble de fichiers. CaractŠres g‚n‚riques autoris‚s.
commande Commande … ex‚cuter pour chaque fichier.
paramŠtres Liste des paramŠtres ou des options pour la commande
sp‚cifi‚e.

Pour utiliser la commande FOR dans un programme de commandes, sp‚cifiez
%%variable au lieu de %variable. Les noms de variables respectent la
casse, donc %i est diff‚rent de %I.

Si les extensions de commandes sont activ‚es, les formes suppl‚mentaires
suivantes sont prises en charge pour la commande FORÿ:

FOR /D %variable IN (ensemble) DO commande [paramŠtres]

Si ensemble contient des caractŠres g‚n‚riques, alors la correspondance se
fait sur les noms de r‚pertoires au lieu des noms de fichiers.

FOR /R [[lecteur:]chemin] %variable IN (ensemble) DO commande [paramŠtres]

Parcourt l'arborescence de r‚pertoires depuis la racine [lecteur:]chemin,
en ex‚cutant FOR dans chaque r‚pertoire de l'arborescence. Si aucun
r‚pertoire n'est sp‚cifi‚ aprŠs /R alors le r‚pertoire en cours est
utilis‚. Si ensemble est seulement un point (.) alors seule l'arborescence
de r‚pertoires sera ‚num‚r‚e.

FOR /L %variable IN (d‚but,pas,fin) DO commande [paramŠtres]

L'ensemble est une s‚quence de chiffres allant de d‚but … fin, incr‚ment‚
de pas. Ainsi (1,1,5) g‚nŠre la s‚quence 1 2 3 4 5 et (5,-1,1) g‚nŠre la
s‚quence (5 4 3 2 1)

FOR /F ["options"] %variable IN (ensemble-fichiers) DO commande [paramŠtres]
FOR /F ["options"] %variable IN ("chaŒne") DO commande [paramŠtres]
FOR /F ["options"] %variable IN ('commande') DO commande [paramŠtres]

ou, si l'options usebackq est utilis‚eÿ:

FOR /F ["options"] %variable IN (ensemble-fichiers) DO commande [paramŠtres]
FOR /F ["options"] %variable IN ('chaŒne') DO commande [paramŠtres]
FOR /F ["options"] %variable IN (`commande`) DO commande [paramŠtres]

ensemble-fichiers est un ou plusieurs noms de fichiers. Chaque fichier est
ouvert, lu et trait‚ avant de passer au fichier suivant de
ensemble-fichiers. Le traitement consiste … lire dans le fichier, le
d‚couper en lignes individuelles de texte puis analyser chaque ligne en
z‚ro ou plusieurs parties. Le corps de la boucle FOR est ensuite appel‚
avec la ou les valeurs de variables prenant la valeur de la ou des parties
trouv‚es. Par d‚faut, /F transmet la premiŠre partie s‚par‚e par un blanc
dans chaque ligne de chaque fichier. Les lignes vides sont ignor‚es. Vous
pouvez outrepasser le comportement d'analyse par d‚faut en sp‚cifiant le
paramŠtre optionnel "options". Ceci est une chaŒne entre guillemets
contenant un ou plusieurs mots-cl‚s sp‚cifiant diverses options d'analyse.
Les mots-cl‚s sontÿ:

eol=c - sp‚cifie un caractŠre de commentaire de fin de ligne
(un seul)
skip=n - sp‚cifie le nombre de lignes … ignorer en d‚but
de fichier.
delims=xxx - sp‚cifie un ensemble de d‚limiteurs. Ceci remplace
l'ensemble de d‚limiteurs par d‚faut qui sont
l'espace et la tabulation.
tokens=x,y,m-n - sp‚cifie les parties de chaque ligne devant ˆtre
transmises au corps de FOR … chaque it‚ration.
Ceci provoquera l'allocation de noms de variables
suppl‚mentaires. La forme m-n est une ‚tendue
sp‚cifiant les parties allant de m … n. Si le
dernier caractŠre de la chaŒne tokens= est une
ast‚risque, alors une variable suppl‚mentaire est
allou‚e et re‡oit le texte restant dans la ligne
suivant la derniŠre partie analys‚e.
usebackq - sp‚cifie que la nouvelle s‚mantique est en place,
lorsqu'une chaŒne entre guillemets invers‚s est
ex‚cut‚e en tant que commande et une chaŒne entre
guillemets simples est une chaŒne de commande
litt‚rale et permet l'utilisation de guillemets
doubles pour citer des noms de fichiers.

Quelques exemples explicatifsÿ:

FOR /F "eol=; tokens=2,3* delims=, " %i in (monfich.txt) do @echo %i %j %k

analyse chaque ligne de monfich.txt, en ignorant les lignes commen‡ant
par un point-virgule, en transmettant les 2nde et 3Šme parties de
chaque ligne au corps de FOR, les parties ‚tant d‚limit‚es par des
virgules et/ou espaces. Notez que le corps de FOR r‚f‚rence %i pour
l'obtention de la 2nde partie, %j pour l'obtention de la 3Šme partie
et %k pour l'obtention des parties restantes aprŠs la 3Šme. Pour les
noms de fichiers contenant des espaces, placez les noms de fichiers
entre guillemets doubles. Afin d'utiliser ainsi les guillemets doubles,
vous devez ‚galement utiliser l'option usebackq, faute de quoi les
guillemets doubles seraient interpr‚t‚s comme d‚finissant une chaŒne
litt‚rale … analyser.

%i est d‚clar‚e explicitement dans la d‚claration FOR et %j et %k
sont d‚clar‚es implicitement via l'option tokens=. Vous pouvez sp‚cifier
jusqu'… 26 paries via la ligne tokens=, tant que cela ne provoque pas
de tentative de d‚claration de variable plus ‚lev‚e que la lettre 'z'
ou 'Z'. Souvenez-vous que les variables de FOR se composent de lettres,
tiennent compte de la casse, sont globales et que plus de 52 ne peuvent
pas ˆtre actives … la fois.

Vous pouvez aussi utiliser la logique d'analyse FOR /F sur une chaŒne en
pla‡ant ensemble-fichiers entre guillemets entre les parenthŠses,
en utilisant des guillemets simples. Elle sera trait‚e comme une ligne
d'entr‚e simple provenant d'un fichier puis analys‚e.

Enfin, vous pouvez utiliser la commande FOR /F pour analyser les
donn‚es en sortie d'une commande. Faites ceci en pla‡ant des guillemets
invers‚s autour de ensemble-fichiers entre les parenthŠses. Elle sera
trait‚e comme une ligne de commande transmise … un CMD.EXE enfant et
la sortie est gard‚e en m‚moire et analys‚e comme s'il s'agissait d'un
fichier. Ainsi l'exemple suivantÿ:

FOR /F "usebackq delims==" %i IN (`ensemble`) DO @echo %i

‚num‚rerait les noms de variables d'environnement de l'environnement
en cours.

De plus, la substitution de r‚f‚rences de variables FOR a ‚t‚ am‚lior‚e.
Vous pouvez maintenant utiliser la syntaxe optionnelle suivanteÿ:

%~I - ‚tend %I en supprimant les guillemets (")
%~fI - ‚tend %I en nom de chemin d'accŠs reconnu
%~dI - ‚tend %I en lettre de lecteur uniquement
%~pI - ‚tend %I en chemin d'accŠs uniquement
%~nI - ‚tend %I en nom de fichier uniquement
%~xI - ‚tend %I en extension de fichier uniquement
%~sI - chemin ‚tendu contenant uniquement des noms courts
%~aI - ‚tend %I en attributs du fichier
%~tI - ‚tend %I en date/heure du fichier
%~zI - ‚tend %I en taille du fichier
%~$PATH:I - parcourt les r‚pertoires de la variable
d'environnement PATH et ‚tend %I en nom du
premier fichier reconnu trouv‚. Si le nom de la
variable d'environnement n'est pas d‚fini ou
que le fichier n'est pas trouv‚ par la recherche,
alors ce modificateur ‚tend en chaŒne vide

Vous pouvez combiner les modificateurs pour obtenir des r‚sultats compos‚sÿ:

%~dpI - ‚tend %I en lettre de lecteur et chemin d'accŠs uniquement
%~nxI - ‚tend %I en nom de fichier et extension uniquement
%~fsI - ‚tend %I en nom de chemin complet avec noms courts
uniquement
%~dp$PATH:i - parcourt les r‚pertoires list‚s dans la variable
d'environnement PATH … la recherche de %I et ‚tend
en lettre de lecteur du premier trouv‚.
%~ftzaI - ‚tend %I en DIR comme ligne en sortie

Dans les exemples ci-dessus %I et PATH peuvent ˆtre remplac‚s par d'autres
valeurs valides. La syntaxe %~ se termine par un nom de variable FOR valide.
Le choix de noms de variables en majuscules comme %I facilite la lecture
et empˆche toute confusion avec les modificateurs qui ne tiennent pas compte
de la casse.


je regarde l'éxo puis revient après.

labougie



Répondre en citant
Message [Formation]Labougie 
Quand j'applique ce code,

Code:

@echo off
For /f "tokens=1,4 delims= " %%B in ('type c:\test.txt') do echo %%B %%C>> c:\tests1.txt
notepad  c:\tests1.txt
pause


le fichier test => 4 noms
le fichier tests1 => pareil 4 noms

Pourquoi cela ne fonctionne pas chez moi ?

labougie



Répondre en citant
Message [Formation]Labougie 
tu as bien mis un espace dans le delims ? tu as bien un txt sur une ligne avec un espace entre ?
tu as executer en tant qu'administrateur ?
utilise notepad++ ? ou notepad classic ? pour rediger tes batchs ?
vive vista Exclamation




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Salut laddy,

J'écris les batchs directement avec power batch, je l'exécute en mode admin bien entendu.


Je regarde pour installer Xp mais cela n'est pas trop simple vu ma config.

regarde => http://forum.pcastuces.com/installation_en_sauvage-f1s168068.htm?page=1&amp…

voici mon code

@echo off
:: Affichage des 4 noms dans le fichier test
for %%A in (toto titi tata tonton bermuda) do echo %%A >>c:\test.txt
pause

:: Affichage de seulement de tata, bermuda dans le fichier tests1
For /f "tokens=3,4 delims= " %%B in ('type c:\test.txt') do echo %%B %%C >>c:\tests1.txt
notepad c:\tests1.txt
pause


:: Affichage de seulement tata, tonton, bermuda dans le fichier tests2
For /f "tokens=3-5 delims= " %%B in ('type c:\test.txt') do echo %%B %%C %%D >>c:\tests2.txt
notepad c:\tests2.txt
pause



je ne pourrais répondre entre 14 et 21h, je taffe Mr. Green .

je vais regarder pour notepad classic ou le ++

labougie



Répondre en citant
Message [Formation]Labougie 
ta premiere boucle ne crée pas un fichier txt sur une ligne horizontale mais verticale
toto
titi
tata
tonton
bermuda

différent de ce que je t'ai demandé dans le sujet précédent , commence sur un fichier txt existant et non par la création du fichier par une boucle.

toto titi tata tonton bermuda
puis dans un autre fichier toto,titi,tata,tonton,bermuda

si mes souvenirs sont bons, la procédure de recherche est différente avec un fichier ayant des informations verticales. (j'ai des grosses migraines avec le temps qu'il fait, je m'excuse d'avance si je ne t'explique pas ce cas pour le moment, je n'arrive pas à réflechir)

pour ton multiboot c'est sûr qu'en ayant pas respecter la hiérachie des os c'est un peu la cack...
tu as pensé au boot.ini de vista ?
on m'a toujours dit qu'un os pour booter devait être sur une partition primaire... 4 partitions principales par disque dur..




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Salut laddy,

j'espère que tu vas mieux.

le batch ci dessous nécéssite la création au préalable de 2 fichiers txt.
le 1er se nomme testespace et contient toto titi tata tonton bermuda en ligne
le 2 se nomme testvirgule et contient toto,titi,tata,tonton,bermuda en ligne


@echo off
:: Affichage des 4 noms dans le fichier test
:: for %%A in (toto titi tata tonton bermuda) do echo %%A >>c:\test.txt
:: pause

:: Texte de depart toto titi tata tonton bermuda en ligne
:: Affichage de seulement de tata, bermuda dans le fichier tests1
For /f "tokens=3,4 delims= " %%B in ('type c:\testespace.txt') do echo %%B %%C >>c:\tests1.txt
notepad c:\tests1.txt
pause

:: Texte de depart toto titi tata tonton bermuda en ligne
:: Affichage de seulement tata, tonton, bermuda dans le fichier tests2
For /f "tokens=3-5 delims= " %%B in ('type c:\testespace.txt') do echo %%B %%C %%D >>c:\tests2.txt
notepad c:\tests2.txt
pause

:: Texte de depart toto,titi,tata,tonton,bermuda en ligne
:: Affichage de seulement de tata, bermuda dans le fichier
For /f "tokens=3,5 delims=, " %%B in ('type c:\testvirgule.txt') do echo %%B %%C >>c:\tests3.txt
notepad c:\tests3.txt
pause



labougie



Répondre en citant
Message [Formation]Labougie 
Hello Labougie,

Exact, Okay
Je pense que tu as compris le fonctionnement du tokens et delims ?

Maintenant dans ton fichier txt testespace.txt par exemple tu ajoutes une phrase en premier ligne :

Citation:

essaie de comprehension du parametre skip
titi tata tonton bermuda


et une autre avec deux phrases :

Citation:
essaie de comprehsion du parametre skip
maintenant je comprend
titi tata tonton bermuda


réaliser une boucle comprenant le paramètre skip et qui affiche les mots tata et tonton uniquement.
Que fais ce paramètre skip ? expliques moi




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Bonsoir laddy

Voici pour cette partie ma proposition.

Citation:

essaie de comprehension du parametre skip
titi tata tonton bermuda




@echo off
:: Affichage des 4 noms dans le fichier test
:: for %%A in (toto titi tata tonton bermuda) do echo %%A >>c:\test.txt
:: pause

:: Texte de depart toto titi tata tonton bermuda en ligne
:: Affichage de seulement de tata, bermuda dans le fichier tests1
For /f "skip=1 tokens=3,4 delims= " %%B in ('type c:\testespace.txt') do echo %%B %%C >>c:\tests1.txt
notepad c:\tests1.txt
pause

:: Texte de depart toto titi tata tonton bermuda en ligne
:: Affichage de seulement tata, tonton, bermuda dans le fichier tests2
For /f " skip=1 tokens=3-5 delims= " %%B in ('type c:\testespace.txt') do echo %%B %%C %%D >>c:\tests2.txt
notepad c:\tests2.txt
pause

:: Texte de depart toto,titi,tata,tonton,bermuda en ligne
:: Affichage de seulement de tata, bermuda dans le fichier
For /f "skip=1 tokens=3,5 delims=, " %%B in ('type c:\testvirgule.txt') do echo %%B %%C >>c:\tests3.txt
notepad c:\tests3.txt
pause

:: Texte de depart toto,titi,tata,tonton,bermuda en ligne
:: Affichage de seulement de tata, tonton, bermuda dans le fichier
For /f "skip=1 tokens=3-5 delims=, " %%B in ('type c:\testvirgule.txt') do echo %%B %%C >>c:\tests4.txt
notepad c:\tests4.txt
pause


Voici ma proposition pour cette partie

Citation:

essaie de comprehsion du parametre skip
maintenant je comprend
titi tata tonton bermuda




Il faut simplement remplacer la valeur de

skip=1

par

skip=2

La fonction skip=n
La valeur n correspond aux nombres de lignes que l'on souhaite ignorer lors de la recherche.



labougie



Répondre en citant
Message [Formation]Labougie 
très bien :-D
As tu des questions sur les boucles for ?
avec de la pratique, la compréhension de cette commande viendra petit à petit.

Sais tu lire une clé du registre ?
Si non, donnes moi la commande qui permet de lire la clé de registre suivant : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Je serai en vacances du 1 aout ou 15 aout
mes réponses seront sans doute plus longues




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Bonjour Laddy,

Concernant les clés de registres, non je ne sais pas les lire, mais je vais chercher.
Donne moi 1 ou 2 exos en plus de celui ci-dessus afin que je puisse chercher pendant tes vacances.
J'aurai donc 15 jours pour te fournir un devoir complet Mr. Green .

Bonnes vacances, et profite bien du soleil Okay

labougie



Message [Formation]Labougie 


Montrer les messages depuis:
Répondre au sujet Page 4 sur 8
Aller à la page: <  1, 2, 3, 4, 5, 6, 7, 8  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch