Batch Copy dans DOS

Résolu/Fermé
-
 Jul -
Bonjour,

J'aimerais concaténer des fichiers en DOS, mais en faisant un batch afin qu'il le fasse sur toute une série de fichier.

Pour le faire sur 1 fichier j'utilise la commande
copy header.txt+a1.txt a1_head.txt 


Comment le faire sur tous mes fichiers a2, a3, etc automatiquement. J'ai pensé utilisé un
for
, mais je ne sais pas comment lui dire "prend le deuxième fichier de la liste et fais la commande".

Merci d'avance pour votre aide

2 réponses

Messages postés
18410
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
18 janvier 2022
5 535
hello
tu peux faire
copy header.txt+a*.txt a1_head.txt
J'ai essayé en faisant
copy header.txt+a*.txt a*_head.txt


Mais dans ce cas, il me concatène tous mes fichiers donc il me crée un fichier qui est une concaténation de header, a1, a2, ...

Moi je voudrais avoir à chaque fois
- un ficher qui s'appellerait
a1_head.txt
, qui serait une concaténation de
header.txt
et de
a1.txt
,
- un autre fichier qui s'appellerait
a2_head.txt
, qui serait une concaténation de
header.txt
et de
a2.txt
,
- etc.
Je me réponds moi-même puisque j'ai trouvé la solution :

for %i in (a*.txt) do copy header.txt+%i %ih

J'obtiendrai alors des fichiers a1.txth, a2.txth, etc qu'il suffira de renomer en .txt
Messages postés
18410
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
18 janvier 2022
5 535
alors il faut faire une boucle, l'echo devant le copy va afficher ce qu'il ferait, l'enlever pour exécuter

@echo off
setlocal enableDelayedExpansion
for %%a in (a*.txt) do (
rem N prend le nom du fichier sans l'extension, a1, a2, ...
set N=%%~na
echo copy header.txt+%%a !N!_header.txt)