A voir également:
- DOS : Ecrire en fin de ligne
- Commande dos - Guide
- Raccourci iphone taper au dos - Guide
- Modèle étiquette dos classeur excel - Forum Logiciels
- Lister les disques sous dos ✓ - Forum Windows
- Dos echo off ✓ - Forum Autoit / batch
3 réponses
Cyclic-3
Messages postés
125
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
15 mai 2009
11
28 juil. 2008 à 18:35
28 juil. 2008 à 18:35
Bonjour,
J'ai beaucoup fait de trucs comme toi en DOS, mais donne moi des exemples:
-quel textes tu as dans REP_LOG et TEMP_LOG ?
-dans le CSV, n'y a t-il qu'une seule colonne enregistrée, ou plusieurs mais tu ré-écris les deuxième et troisième ?
Dans ton script,il me semble qu'il manque les valeurs de delims, mais je peux me tromper.
Connais tu ce site avec un tuto super sur le batch ? http://astase.com/
J'ai beaucoup fait de trucs comme toi en DOS, mais donne moi des exemples:
-quel textes tu as dans REP_LOG et TEMP_LOG ?
-dans le CSV, n'y a t-il qu'une seule colonne enregistrée, ou plusieurs mais tu ré-écris les deuxième et troisième ?
Dans ton script,il me semble qu'il manque les valeurs de delims, mais je peux me tromper.
Connais tu ce site avec un tuto super sur le batch ? http://astase.com/
Bonjour,
Le fichier rep_log contient un DIR de tout les répertoire "log" d'un serveur. voilà un échantillon :
R‚pertoire de d:\universe\MOND01\X\PEG\log
02/07/2006 12:08 <DIR> .
02/07/2006 12:08 <DIR> ..
22/07/2008 21:00 6ÿ235 log.txt
22/07/2008 21:00 156 PEG60-17.ftp
2 fichier(s) 6ÿ391 octets
2 R‚p(s) 81ÿ701ÿ199ÿ872 octets libres
Le volume dans le lecteur D s'appelle Data
Le num‚ro de s‚rie du volume est F864-96D4
R‚pertoire de d:\universe\MOND01\X\RFP\log
28/07/2005 14:20 <DIR> .
28/07/2005 14:20 <DIR> ..
0 fichier(s) 0 octets
2 R‚p(s) 81ÿ701ÿ199ÿ872 octets libres
Le volume dans le lecteur D s'appelle Data
Le num‚ro de s‚rie du volume est F864-96D4
Dans ce fichier, je récupère le nombre de fichiers pour la colonne 2 et la taille pour la colonne 3.
Le fichier TEMP_LOG contient la liste des répertoires log du serveur :
" "
d:\universe\MOND01\X\CFG\log
d:\universe\MOND01\X\CPT\log
d:\universe\MOND01\X\CRO\log
d:\universe\MOND01\X\DBF\log
d:\universe\MOND01\X\IFU\log
d:\universe\MOND01\X\IU_\log
d:\universe\MOND01\X\KIO\log
d:\universe\MOND01\X\LCV\log
d:\universe\MOND01\X\OPI\log
d:\universe\MOND01\X\PDF\log
d:\universe\MOND01\X\PEG\log
d:\universe\MOND01\X\RFP\log
d:\universe\MOND01\X\SYC\log
d:\universe\MOND01\X\TEC\log
Cette liste doit se retrouver en colonne 1 (sauf la première ligne vide).
Merci pour ton aide.
Le fichier rep_log contient un DIR de tout les répertoire "log" d'un serveur. voilà un échantillon :
R‚pertoire de d:\universe\MOND01\X\PEG\log
02/07/2006 12:08 <DIR> .
02/07/2006 12:08 <DIR> ..
22/07/2008 21:00 6ÿ235 log.txt
22/07/2008 21:00 156 PEG60-17.ftp
2 fichier(s) 6ÿ391 octets
2 R‚p(s) 81ÿ701ÿ199ÿ872 octets libres
Le volume dans le lecteur D s'appelle Data
Le num‚ro de s‚rie du volume est F864-96D4
R‚pertoire de d:\universe\MOND01\X\RFP\log
28/07/2005 14:20 <DIR> .
28/07/2005 14:20 <DIR> ..
0 fichier(s) 0 octets
2 R‚p(s) 81ÿ701ÿ199ÿ872 octets libres
Le volume dans le lecteur D s'appelle Data
Le num‚ro de s‚rie du volume est F864-96D4
Dans ce fichier, je récupère le nombre de fichiers pour la colonne 2 et la taille pour la colonne 3.
Le fichier TEMP_LOG contient la liste des répertoires log du serveur :
" "
d:\universe\MOND01\X\CFG\log
d:\universe\MOND01\X\CPT\log
d:\universe\MOND01\X\CRO\log
d:\universe\MOND01\X\DBF\log
d:\universe\MOND01\X\IFU\log
d:\universe\MOND01\X\IU_\log
d:\universe\MOND01\X\KIO\log
d:\universe\MOND01\X\LCV\log
d:\universe\MOND01\X\OPI\log
d:\universe\MOND01\X\PDF\log
d:\universe\MOND01\X\PEG\log
d:\universe\MOND01\X\RFP\log
d:\universe\MOND01\X\SYC\log
d:\universe\MOND01\X\TEC\log
Cette liste doit se retrouver en colonne 1 (sauf la première ligne vide).
Merci pour ton aide.
Cyclic-3
Messages postés
125
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
15 mai 2009
11
1 août 2008 à 17:35
1 août 2008 à 17:35
Suite, si tu me lis toujours ...
J'ai déjà obtenu un résultat avec ça:
findstr "fichier(s)" REP_LOG >REP.TXT
findstr /N "fichier(s)" REP.TXT >REP2.TXT
findstr "universe" TEMP_LOG >TMP.TXT
findstr /N "universe" TMP.TXT >TMP2.TXT
For /L %%a in (1,1,2) Do (
Findstr "%%a:" REP2.TXT >REP3.txt
Findstr "%%a:" TMP2.TXT >TMP3.TXT
For /F "tokens=2 delims=:" %%b in (REP3.TXT) Do Echo %%b >VAL1.txt
Copy SET1+VAL1.txt SET1.BAT
Call SET1.BAT
For /F "tokens=2,3 delims=:" %%b in (TMP3.TXT) Do Echo %%c>VAL2.txt
Copy SET2+VAL2.txt SET2.BAT
Call SET2.BAT
Set
Echo %VAL1; %VAL2
pause)
Cela correspond à ce que je te disais précédemment:
J'extrait seulement les lignes nécessaires et dans un 2° temps je les numérote;
ensuite, la boucle FOR permet d'otenir dans chaque fichier les lignes correspondantes, puis de récupérer seulement ce qui t'intéresse en laissant de coté les numéros.
Jusque là ça va, mais l'instruction SET qui me rendrait service ne fonctionne pas bien dans la boucle ?
Alors j'ai créé deux fichiers SET1 et SET2 qui comportent l'instruction "SET VALx= " mais SANS retour chariot; une astuce qui permet de récupérer quand même les valeurs en VAL1 et VAL2, ce que je vérifie avec SET (tout court)
Après ça se corse, car l'Echo %VAL1% %VAL2% ne marche pas ????
Déjà si ça peux t'aider !
Cordialement
P.S.: au fait, ton DOS c'est quoi, WinNT ou Windows XP ou autre chose ?
J'ai déjà obtenu un résultat avec ça:
findstr "fichier(s)" REP_LOG >REP.TXT
findstr /N "fichier(s)" REP.TXT >REP2.TXT
findstr "universe" TEMP_LOG >TMP.TXT
findstr /N "universe" TMP.TXT >TMP2.TXT
For /L %%a in (1,1,2) Do (
Findstr "%%a:" REP2.TXT >REP3.txt
Findstr "%%a:" TMP2.TXT >TMP3.TXT
For /F "tokens=2 delims=:" %%b in (REP3.TXT) Do Echo %%b >VAL1.txt
Copy SET1+VAL1.txt SET1.BAT
Call SET1.BAT
For /F "tokens=2,3 delims=:" %%b in (TMP3.TXT) Do Echo %%c>VAL2.txt
Copy SET2+VAL2.txt SET2.BAT
Call SET2.BAT
Set
Echo %VAL1; %VAL2
pause)
Cela correspond à ce que je te disais précédemment:
J'extrait seulement les lignes nécessaires et dans un 2° temps je les numérote;
ensuite, la boucle FOR permet d'otenir dans chaque fichier les lignes correspondantes, puis de récupérer seulement ce qui t'intéresse en laissant de coté les numéros.
Jusque là ça va, mais l'instruction SET qui me rendrait service ne fonctionne pas bien dans la boucle ?
Alors j'ai créé deux fichiers SET1 et SET2 qui comportent l'instruction "SET VALx= " mais SANS retour chariot; une astuce qui permet de récupérer quand même les valeurs en VAL1 et VAL2, ce que je vérifie avec SET (tout court)
Après ça se corse, car l'Echo %VAL1% %VAL2% ne marche pas ????
Déjà si ça peux t'aider !
Cordialement
P.S.: au fait, ton DOS c'est quoi, WinNT ou Windows XP ou autre chose ?
tibo830
>
Cyclic-3
Messages postés
125
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
15 mai 2009
4 août 2008 à 15:02
4 août 2008 à 15:02
Bonjour,
Merci pour ton aide. J'ai finit par trouver la solution en imbriquant deux boucles.
Merci pour ton aide. J'ai finit par trouver la solution en imbriquant deux boucles.
Cyclic-3
Messages postés
125
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
15 mai 2009
11
31 juil. 2008 à 17:56
31 juil. 2008 à 17:56
Bonjour Tibo,
et désolé pour ce laps de temps passé, mais j'ai des contraintes, malgré ma retraite.
J'ai vu plusieurs problèmes dans ta syntaxe :
- dans la premiére ligne, SEUL le premier FINDSTR est utile, si tu ne cherche QUE les lignes contenant "fichier(s)",
et DE PLUS c'est bien "fichier(s)" et non "fichiers" qu'il faut chercher.
- tes guillemets simples sont-ils bien en réalité des guillements inversés, car c'est le résultat du Findstr que tu analyse, n'est-ce pas ?
- dans la deuxième ligne, >>universe<< N'EST PAS entre guillemets ?
- Si tu imbrique tes FOR, tu écris les même valeurs de %c% et %d de la première boucle dans la boucle du deuxième FOR ?
Je cherche un autre moyen : par exemple, faire un fichier temporaire de ligne "NUMEROTEES" avec "fichier(s)", et il DOIT y en avoir autant que de lignes avec ...\log, n'est-ce pas ?
faire AUSSI un fichier temporaire à partir du TEMP_LOG, pareil, en numérotant les lignes contenant "universe"
ENSUITE tu imbrique tes deux FOR qui lisent les valeurs ET les numéros et quand le numéro de la première boucle correspond à la deuxième, tu ecris les valeurs des variables qui t'intéressent.
Cordialement.
et désolé pour ce laps de temps passé, mais j'ai des contraintes, malgré ma retraite.
J'ai vu plusieurs problèmes dans ta syntaxe :
- dans la premiére ligne, SEUL le premier FINDSTR est utile, si tu ne cherche QUE les lignes contenant "fichier(s)",
et DE PLUS c'est bien "fichier(s)" et non "fichiers" qu'il faut chercher.
- tes guillemets simples sont-ils bien en réalité des guillements inversés, car c'est le résultat du Findstr que tu analyse, n'est-ce pas ?
- dans la deuxième ligne, >>universe<< N'EST PAS entre guillemets ?
- Si tu imbrique tes FOR, tu écris les même valeurs de %c% et %d de la première boucle dans la boucle du deuxième FOR ?
Je cherche un autre moyen : par exemple, faire un fichier temporaire de ligne "NUMEROTEES" avec "fichier(s)", et il DOIT y en avoir autant que de lignes avec ...\log, n'est-ce pas ?
faire AUSSI un fichier temporaire à partir du TEMP_LOG, pareil, en numérotant les lignes contenant "universe"
ENSUITE tu imbrique tes deux FOR qui lisent les valeurs ET les numéros et quand le numéro de la première boucle correspond à la deuxième, tu ecris les valeurs des variables qui t'intéressent.
Cordialement.