Votre question

BATCH et la gestion de fichier - dossier .....

Tags :
  • Silver
  • Programmation
Dernière réponse : dans Programmation
2 Décembre 2005 20:28:37

Bonsoir à tous donc voila j'ai plusieurs question sur la manipulation des fichier, surtout les nom des fichier en batch.

1° Est il possible de vérifier le nom que porte mon fichir batch qui est entrain d' etre executé ??

2°Comment récupéréUNIQUEMENT le nom de tout les fichiers situés dans un repertoir définit en connaissant seulement l'extension des fichiers.

3° Pour manipuler des fichier situé dans "Mes Documents" esqu'il faut obligatoirement passer par :
C:\Documents and Settings\user\Documents de User\ ???

4° Comment faire si on ne connait pas à l'avance le "User" ??

Voila c'était une compilation des meilleurs question de Dark Silver :-D
Si vous pouviez répondre à une ou plusieurs de ces questions ce serait sympas !!

Merci !

Autres pages sur : batch gestion fichier dossier

a b L Programmation
3 Décembre 2005 00:01:24

1. c'est le paramètre 0. Ex:
echo %0

2. dir /B *.txt

3 et 4 utiliser la variable d'environnement USERPROFILE
Rappel,: en tappant just set, on a la liqste des variable d'environnements et help set (à la fin) il y a les variables systèmes (comme %DIR%)
Pour "Mes documents" je n'ai rien vu, mais comme tu as le reste c'est bon ;-)
3 Décembre 2005 00:08:19

Merci beaucoup !!
Maintenant peut tu me dire comment trouver et éliminer une chaine de caractère dans un fichier. par exemple dans un fichier j'ai : 25/09/2001

Comment faire pour enlever les "/"
Contenus similaires
a b L Programmation
3 Décembre 2005 12:02:58

Je ne sais pas comment découper en cherchant le / comme le fait la commande cut sous unix. Il y a peut-être quelque chose à faire avec find et findstr, mais je ne vois pas.

Sinon si tu connais les positions, tu peux découper facilement sur les positions:
si tu a une variable "a" qui contient 25/09/2001, tu peux récupérer le "25" comme ceci:
echo %a:~0,2%
le "09": echo %a:~3,2%
le "2001": echo %a:~6%

Le premier chiffre indiquant la position du caractère (commençant par 0 evidemment), le 2ème chiffre est le nombre de caractères à récupérer (s'il n'y est pas, ça prend jusqu'à la fin).
Ceci est expliqué dans "help set".
4 Décembre 2005 22:03:07

Slt et esque tu pourré me dire comment récupéré la première ligne d'un fichier dans une variables.

Et comment conter le nombre de lignes d'un fichier ??

J'ai cru comprendre qu'il faut utiliser la "boucle for" mais je ne sais ni à quoi elle sair exactement ni comment l'utiliser.

Quand j'ai tappé "for/?" dans dos sa m'a sortit un charabia que j'ai du mal à avalé !!
a b L Programmation
5 Décembre 2005 13:25:48

FOR c'est pour faire une boucle.
Le for du batch permet de faire plusieurs types de boucles selon son utilisation (je t'avoue que je ne trouve pas cette instruction très claire).

Bon je viens de jeter un oeil, j'ai vu ça:
FOR /F "eol=; tokens=2,3* delims=, " %i in (monfich.txt) do @echo %i %j %k

Et ben c'est justement cequ'il te faut pour ta date en mettant:
FOR /F "tokens=1,2,3* delims=/ " %i in (monfich.txt) do @echo jour=%i mois=%j annee=%k

Il faut bien mettre entre parenthèse le fichier pour indique c'est un fichier et pas autre chose.
Ici le for boucle sur les ligne du fichier, découpe la ligne en 3 variables, le séparateur étant "/"

%i avant in c'est généralement ce qui boucle ("la valeur courante"). Comme là c'est un truc bizarre et qu'il y a 3 parties, ça met dans i,j,k (en incrémentant la lettre).
mais bon ça marche :-D

5 Décembre 2005 17:19:15

Ok je vais essyare pour la date. Mais si non comment faire pour les questions précédement posé : récupéré la première ligne d'un fichier dans une variable et coment compter le nombre de ligne d'un fichier ... Esque au moin c'est possible ?

Moi aussi je t'avoueré que même avec tes explication cete boucle for reste aussi complexe mais j'ai déjà réussis à comprendre quel pouvait être son utilité !

Merci !
a b L Programmation
5 Décembre 2005 19:13:27

Pour une première ligne, je ne sais pas trop, tu peux faire un truc pas propre :-D
Un for et une variable booléenne pour ne traiter que la première ligne.
Par exemple, set /A isFirtLineRead=0
à chaque boucle de for:
- si isFirtLineRead est égal à 0, tu fait ton traitement et tu isFirtLineRead à 1
- sinon tu ne fait rien.

Bon ça fait des boucles pour rien, mais je vois pas mieux.

Pour compter le nombre de lignes, une même boucle for en incrémentant une variable à chaque fois devrait marcher.

5 Décembre 2005 21:54:48

Désolé mais je ne voi pas du tout ce que tui veu dire : pour la variable OK pas de pb je voi mais j'ai toujours pas compris comment tu récupère la première ligne ??

"isFirtLineRead" c'est une fonction spécial ou juste un nom que ta choisi ?? :-?
a b L Programmation
5 Décembre 2005 23:40:59

Pour la variable, c'est juste un nom que j'ai choisi, désolé pour l'anglais ;-)

Pour le première ligne, en fait, tu les récupèrent toutes, mais tu fais ce que tu as à faire uniquement sur la première.
En fait, la variable permet de savoir si dans ta boucle tu es sur la première ligne ou une autre.
Une boucle faite par un FOR %i IN (fichier.txt) DO action
quand la variable est à 0, ça signifie que la 1ère ligne n'a pas encore été lue. Quand elle est à 1, ça signifie que tu as déjà lu la première ligne et donc, que tu es sur une ligne suivante.
Donc tu passes la variable de 0 à 1 pour dire que tu as fini de lire la première ligne.

6 Décembre 2005 19:23:53

Ah Ok ! C'est vrai que comme tu di c'est un travail "pas propre" :) .

Enfaite moi je voulais que dans une liste de nom créer à l'avance mon fichier batch copie un fichier mais avec les différents nom qui se trouvent dans la liste. (Tu vois ce que je veu dire ?)

Donc si il existe une solution plus . . . . (propre) :) 

Toujours plus de question :-D

Bon alors esqu'il est possiblde faire quelque chose du genre :

echo <123.txt >321.txt ??

set /P contenue=<123.txt
echo %contenue%>321.txt
" sa écris dans un fichier san modifié le contenue qu'il y avait avant mais est il possible au lieu que sa rajoute à la suite sa rajoute au début du fichier ?

Merci.
10 Décembre 2005 12:46:23

dsl mais 1 up car cricky est revenu :-D

:p lus1:
a b L Programmation
10 Décembre 2005 14:18:54

en fait echo avec < ne marche pas.
Il faut utiliser la commande TYPE qui affiche le contenu d'un fichier.
type 123.txt > 321.txt

Tiens j'avais fait il y a un moment, un script qui permet de relier des fichiers qui ont été coupé en plusisuers morceaux (les paramètres étant les fichiers à recoller):

  1. @echo off
  2. set nb=0
  3. echo R‚pertoire courant: %CD%
  4. set /P JOINFILE=Entrez le nom du fichier:
  5.  
  6. if exist %JOINFILE% (
  7. echo Fichier pr‚c‚dent d‚tect‚
  8. )
  9. :join
  10. if "%1"=="" goto end
  11. echo Lecture fichier %1...
  12. type %1 >> %JOINFILE%
  13. shift
  14. set /a nb+=1 > NUL
  15. goto join
  16. :end
  17. if %nb% EQU 0 (
  18. echo Usage: join file1 [file2 [file3 [...]]]
  19. ) else (
  20. echo -------------------------------------
  21. echo Fichiers recoll‚s dans '%JOINFILE%'
  22. echo -------------------------------------
  23. )
  24. pause


Je rpends tus les fichiers des paramètres que je lie dans le ficheir %JOINFILE% avec >> qui écrit à la fin du fichier.
Le simple > efface et réécrit le fichier.
Dans ce script j'ai utilise la commande SHIFT pour décaler les paramètres (le %2 devient %1, %3 devient %2 etc), comme ça je boucle sur tous les paramètres sans connaitre le nombre.

Par contre j'ai toujours pas réussi à découper un fichier (faire l'opération inverse) :-D
Il faudrait couper le flux ou le limiter à une taille, mais je ne vois pas comment en batch.

EDIT:
Pour ajouter f1.txt au début de f.txt
il suffit de faire:
  1. type f1.txt > temp.txt
  2. type f.txt >> temp.txt
  3. type temp.txt > f.txt
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS