je reçois tous les jours des fichiers textes que je dois concaténer avant de les intégrer dans un système.
Ces fichiers textes comportent la date et l’heure du moment où ils sont générés.
je voudrai obtenir un fichier
fichieraintegrer.txt
Mes connaissances pour rédiger des scripts .bat sont = 0. C’est pour cette raison que je n’ai pas su exploiter les réponses trouvées sur internet, qui d’ailleurs parfois était des fichiers binaires exécutables (solution non souhaitable).
çà a l’air basique !
C’est une belle ébauche.
J’ai plusieurs problèmes: en exécutant cela il a fait passer toutes les trames dans la fenêtre cmd.
J’aurais voulu obtenir l’output dans un fichier qui rassemble le contenu des deux autres, mais il n’a pas sauvegardé de fichier output.
L’autre problème c’est que les noms de fichiers input sont des variables, puisqu’ils sont générés tous les matins. Et cela doit tourner tous les matins sans que l’on ait à changer les noms de fichiers.
Edité le 15/04/2010 à 13:08
@echo off
REM Utilisé pour l'utilisation avancé du IF
setlocal enabledelayedexpansion
REM : REM = commentaires dans le code
REM supprime l'affichage de commandes inutiles
REM for : boucle
REM 'dir /B *.txt' : liste tous les fichiers txt dans le répertoire d'exécution
REM Algo : Pour tous les fichiers txt présents dans le répertoire d'exécution
REM Algo : echo = écrire, >> = redirection du flux à écrire
REM Algo : écrire le nom du fichier en cours dans le fichier fichieraintegrer.txt
REM Algo : si le nom du fichier n'est pas le nom du fichier de sortie
FOR /f %%i in ('dir /B *.txt') do (
IF %%i NEQ fichieraintegrer.txt echo %%i>>fichieraintegrer.txt
)
REM Fin de l'utilistion avancée du IF
endlocal
Ce bout de code permet de lister l’ensemble des fichiers txt et d’écrire cette liste dans un fichier nommé fichieraintegrer.txt
Il détecte si le fichier de sortie est compris dans la liste pour ne pas l’écrire dans le fichier de sortie.
Ce code peut être recopié dans un fichier nommé concat.bat, par exemple.
Moi non plus, certainement que la page était dans le cache.
En attendant, j’ai continué de chercher, et j’ai essayé çà de mon côté et cela permet d’obtenir presque ce que je veux:
le seul hic c’est que cela va concaténer TOUS les fichiers textes que je reçois alors que dans le répertoire des fichiers intégrer, je ne veux merger que ceux qui s’appellent ‘positionYYYYMMDD.txt’ et ‘position2YYYYMMDD.txt’. Les autres fichiers comme prix.txt par exemple, également présents dans ce répertoire ne doivent pas être mergés avec les positions.
Quelqu’un peut-il m’aider à peaufiner ce script ?
Et puis y a un autre truc que je ne comprends pas. C’est l’argument ‘c:\folder’
Il semblerait que cela soit une variable puisque cela marche dans n’importe quel répertoire où je le mets.
Sauf si je le mets sur un serveur là çà ne marche plus. Et je ne comprends pas.
Désolé, mais j’ai jamais fait de scripts *.bat, alors je rame et je ne comprends pas grandchose car je ne connais rien de toutes les commandes et arguments possibles.
Edité le 15/04/2010 à 14:06
Merci, çà marche. Je connais cette syntaxe standard NomDeFichier*.txt que j’utilise pour tout quotidiennement, notamment mes search. Mais bizarrement, ce matin çà n’a pas marché. Peut-être un ptit paramètre où j’avais merdé.
En tout cas maintenant çà marche nickelchrome.