Добавление txt-файла из нескольких CSV в подкаталогах

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

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

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

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


person Community    schedule 13.10.2009    source источник


Ответы (3)


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

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)
person Chris J    schedule 13.10.2009
comment
Большое спасибо! Я вставляю этот пакетный файл в сценарий VB, так что все это очень полезно. ваше здоровье - person ; 14.10.2009
comment
Я попробовал команду, предложенную с помощью %%a, и получил ошибки. Оказывается, в Windows 7 вы не используете переменные как %%a, они должны иметь префикс с одним % (то есть %a). - person TMC; 01.11.2011
comment
На самом деле двойной знак процента необходим, когда команда находится в файле .bat. Если вы просто запускаете это в командной строке, вам нужен только один знак процента. - person Torre Lasley; 29.03.2012

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

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

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

person Shay Erlichmen    schedule 13.10.2009

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, чтобы работать только с непосредственными подкаталогами, но не с их подкаталогами.

person Community    schedule 13.10.2009