Batch Copy dans DOS

Résolu/Fermé
Jul - 24 nov. 2009 à 12:09
 Jul - 24 nov. 2009 à 16:13
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
A voir également:

2 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
24 nov. 2009 à 12:20
hello
tu peux faire
copy header.txt+a*.txt a1_head.txt
0
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.
0
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
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
24 nov. 2009 à 14:56
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)
0