Это в продолжение вопроса здесь. Пакетный скрипт: объединение нескольких файлов в нескольких папках в один файл

У меня есть 20 файлов с именем 'new.csv' в 20 папках в том же родительском каталоге. Я хочу объединить их всех в один файл. Итак, я хочу сделать это в два этапа.

  1. Я использую XCOPY для копирования каждого new.csv каждой папки в new1, new2, new3 и т.д. В родительской папке. Если я могу сделать это, в моей родительской папке у меня есть 20 csvs, new1, new2..new20.csv.

  2. Затем я могу просто сделать copy new*.csv final.csv . Итак, это код, который я написал, чтобы сделать копии каждого из этих new.csv из каждой папки в родительской папке.

    setlocal EnableDelayedExpansion
    set /a i=0
    FOR /D /R %%G in ("*") DO (
    
    cd %%G 
    set  /a i=i+1
    XCOPY new.csv ..\new%!i!%.csv )
    

Проблема в создании нового файла. Я хочу создать 20 файлов с именами, new1.csv, new2.csv, new3.csv ... new20.csv. Значение счетчика увеличивается, но я не могу добавить его к «новому». Не могли бы вы помочь.

2 ответа2

0

Спасибо! Я отвечаю сам, с чем бы ни работал для меня. Я заменил последнюю строку, как это.

 XCOPY new.csv ..\new_!i!.csv 
0

Если вам нужны полные пути к отдельным CSV, перечисленным в консолидированном CSV, используйте это:

for /r %f in (*.csv) do @echo "%f" >> New.csv && echo. >> New.csv && type "%f" >> New.csv && echo. >> New.csv && echo --- >> New.csv

Если вы просто хотите содержимое CSV, используйте это:

for /r %f in (*.csv) do @type "%f" >> New.csv && echo. >> New.csv

echo. добавляет новую строку в файл и может быть удален, если не требуется дальнейшего сокращения команды.

Эти команды должны быть набраны в родительском каталоге. Если вы используете их в пакетном файле, просто не забудьте удвоить каждый знак%.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .