Ajouter une ligne vide ou un une ligne avec un caractère dans des fichiers textes

bonjour à tous,

J’ai plusieurs fichiers au format txt dont il n’y a pas d’en-tête et pour mon import il m’en faut un, peu importe le contenu de cette ligne puisque lors de l’import, le logiciel l’ignore.
Sans cette ligne il m’ignore la première ligne et donc des données nécessaires.
J’ai environ 400 fichiers à traiter, si je pouvais ne pas le faire à la main ça m’arrangerait.
Sous windows ou linux même.
Merci de votre aide

Ma technique consiste à copier 2 fichiers dans un fichier de sortie en utilisant une commande DOS.
La commande DOS nommée copy permet de prendre un nombre indéterminé de fichiers et de les copier dans un seul fichier
Mon programme utilise un fichier de référence nommé fichier_import.txt qui contient 2 ligne :
une ligne avec un texte banal
et une ligne vide pour simuler un saut de ligne.
Le programme liste tous les fichier txt (dir /b *.txt), et s’il ne trouve pas le fichier de référence, il copie les fichiers fichier_import.txt et le fichier en cours dans la liste dans le sous répertoire nommé sortie et créé en début de programme.

voici le code à mettre dans un fichier portant l’extension bat :


@echo off
echo Debut du prgramme
mkdir sortie
echo Debut de la copie
for /f %%i in ('dir /b *.txt') do (
if "%%i" NEQ "fichier_import.txt" copy fichier_import.txt+%%i sortie\\%%i >> NUL
)
echo Fin du prgramme

Alors là l’ami “chapeau bas” car des forums j’en ai fait et à part sous Linux avec des commandes tordues personnes ne trouvait.
Ça fonctionne en revanche j’ai juste un souci, mes fichiers txt dont le nom est simple style TOTO fonctionnent mais ceux qui ont un espace dans le nom sont renommé jusqu’à l’espace et sans le .txt.
Pense tu pouvoir trouver une solution.
ne te prends surtout pas la tête, si ce n’est que ça, je vais supprimer les espaces dans les noms un par un.
Si tout fonctionne, envoi moi un mail j’aurais une réponse pour toi.
Merci déjà beaucoup

en fait pour les fichiers qui n’ont pas d’extension ce n’est pas un problème juste un ren . en *.txt et c’est bon mais pour les noms tronqués c’est plus gênant.
Edité le 14/12/2010 à 19:33

Pour les espaces, il faut utiliser des " pour que cela passe. Comme j’ai pas tout compris du truc de Jiheme44, j’le laisse voir :wink:

exact Sans-Nom.

Cependant, en faisant des tests, j’ai eu d’autres problèmes.
Premièrement il manque “delims=” pour éviter le problème d’espace, et j’ai quand même rajouté les guillemets.
Deuxièmement, en testant sous Seven, les fichiers copiés présentaient un caractère parasite en fin de fichier.
Problème corrigé avec l’utilisation de /B (fichier en mode binaire, utiliser /A pour les fichiers ascii)

@echo off
echo Debut du prgramme
mkdir sortie
echo Debut de la copie

for /f "delims=" %%i in ('dir /b *.txt') do (
if "%%i" NEQ "fichier_import.txt" copy /B fichier_import.txt+"%%i" sortie\\"%%i" >> NUL
)

echo Fin du programme

bonjour,

je teste le dernier script mais après la création du dossier sortie il ne me copie pas les fichiers alors qu’il le fait avec le premier script. une idée?

heu désolé j’avais refais le test mais oublié de recréer le fichier_import.txt, tout fonctionne à merveille
encore merci.
Edité le 15/12/2010 à 09:10