2009-10-13 7 views
0

Я пытаюсь написать пакетный файл, который будет добавлять все * .csv-файлы в непосредственные подкаталоги в один текстовый файл в текущем каталоге.Добавление txt-файла из нескольких CSV в подкаталогах

Из разных источников мне удалось собрать воедино этот код, который отлично работает для файлов в текущей директории, но не суб-директорий

for %%a in (*.csv) do (type %%a >> csvreport.txt) 

Если кто-то может помочь мне с этим я был бы очень благодарен, как я пробовали различные подходы с подстановочными знаками, но безуспешно.

ответ

0
for /R .\ %%a in (*.csv) do (type %%a >> csvreport.txt) 

Параметр/R обозначает рекурсивный и параметр после этого папка, в которой, чтобы начать (. \ Является текущим каталогом).

Вы можете найти до более, если вы запустите for /?

0
dir /ad /b > dirs.txt 
for /f "tokens=1*" %%i in (dirs.txt) do cd %%i & for %%b in (*.csv) do (type %%b >> c:\csvreport.txt) & cd .. 

Используя флаг/R будет пересекать все подкаталоги. Вы можете вставлять операторы for для работы только с непосредственными подкаталогами, но не с их подкаталогами.

2

Еще один вариант ...

for /f usebackq %%a in (`dir /s /b *.csv`) do (type %%a >> csvreport.txt) 

EDIT: Чтения ваших деталей немного больше ... Вы хотите только непосредственные каталоги, вы можете сделать это:

for /f usebackq %%a in (`dir /b /ad`) do for %%b in ("%%a"\*.csv) do (type "%%b" >> csvreport.txt) 
+0

Спасибо очень! Я вставляю этот командный файл в сценарий VB, поэтому все это очень полезно. cheers –

+1

Я попробовал команду, как было предложено с помощью '%% a', и получил ошибки. Оказывается, что в Windows 7 вы не используете переменные как '%% a', для этого нужно иметь префикс с одним'% '(таким образом'% a'). – TMC

+1

Фактически знак двойной процента необходим, когда команда находится в файле .bat. Если вы просто запускаете это в командной строке, вам нужен только один знак процента. –