Как пакетно объединить несколько файлов .TXT в один новый файл .TXT? - PullRequest
0 голосов
/ 27 января 2020

Я бы хотел автоматизировать публикацию статей в WordPress для моего сайта . У меня есть следующие файлы:

Это уже решение в windows CMD?

C:\>For %f in (in*.txt) do type %f >> Combined.txt

(ПАПКА С 20.000 названий)

  • Заголовок_1
  • Заголовок_2
  • Заголовок_3
  • Заголовок_4
  • Заголовок_5

(И ПАПКА С 20 000 статей)

  • Артикул_1
  • Артикул_2
  • Артикул_3
  • Артикул_4
  • Артикул_5

Номера связаны с соответствующим файлом. Это означает, что заголовок 1 принадлежит статье 1 и т. Д.

Как автоматически объединить заголовок и номер статьи по номеру?

1 Ответ

0 голосов
/ 27 января 2020

В CMD определенно есть несколько способов сделать это. Первый способ, который приходит на ум, - это for-l oop, который работает для общего количества файлов. При каждом запуске добавляйте содержимое файла заголовка в «объединенный» файл, затем добавляйте содержимое файла статей в этот же файл. Кроме того, я бы порекомендовал вам иметь структуру файла, которая выглядит следующим образом:

      Parent Folder
            |
   |------------------|
   |                  |
Titles             Articles

Другими словами, ваша папка с вашими заголовками и папка с вашими подкаталогами статей в той же папке. Это позволит вам сохранить этот скрипт в «Родительской папке», что облегчит просмотр каталогов.

@echo off
echo Starting...
setlocal EnableDelayedExpansion

REM Save the directory of "Parent Folder"
set parent_dir=!cd!
if not exist Merged md Merged

REM Initialize other directories
set titles_dir=!parent_dir!\Titles
set articles_dir=!parent_dir!\Articles
set merged_dir=!parent_dir!\Merged

REM However many files you have goes below
set NUMBER_OF_FILES=100
for /l %%a in (1, 1, !NUMBER_OF_FILES!) do (
    for /f "tokens=*" %%b in (!titles_dir!\Title_%%a.txt) do (
        echo.%%b>>!merged_dir!\Merged_%%a.txt
    )
    for /f "tokens=*" %%b in (!articles_dir!\Article_%%a.txt) do (
        echo.%%b>>!merged_dir!\Merged_%%a.txt
    )
)
echo Done
@echo on

И это все. Вы должны были полностью объединить заголовки и статьи. Я проверил это с 100 сгенерированных текстовых файлов. Вот мой сценарий для теста (сценарий также был сохранен в папке «Родительская папка»):

@echo off
echo Starting...
setlocal EnableDelayedExpansion
if not exist Titles md Titles
if not exist Articles md Articles

set parent_dir=!cd!
set titles_dir=!parent_dir!\Titles
set articles_dir=!parent_dir!\Articles

set NUMBER_OF_FILES=100
for /l %%a in (1, 1, !NUMBER_OF_FILES!) do (
    echo Title%%a>!titles_dir!\Title_%%a.txt
    echo ----->>!titles_dir!\Title_%%a.txt
    echo. >>!titles_dir!\Title_%%a.txt
    for /l %%b in (1, 1, 100) do (
        echo This is article number %%a>>!articles_dir!\Article_%%a.txt
    )
)
echo Done
@echo on

Просто небольшое примечание: это может быть целесообразно сделать на более быстром языке, таком как C ++, особенно если вы работаете с очень большим количеством файлов.

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

...