CMD/BAT - [решено] Как построчно объединить два файла и создать новый

Ответить
Аватара пользователя
Tera2016

CMD/BAT - [решено] Как построчно объединить два файла и создать новый

Сообщение Tera2016 »

Добрый день!

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

Разделитель между столбцами ";".

Файл test1.txt



Код:

Код: Выделить всё

Строка1;
Строка2;
Строка3;
..........
..........
..........

Файл test2.txt



Код:

Код: Выделить всё

Значение1
Значение2
Значение3
..........
..........
..........

Файл final.txt



Код:

Код: Выделить всё

Строка1;Значение1
Строка2;Значение2
Строка3;Значение3
..........
..........
..........
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Как построчно объединить два файла и создать новый

Сообщение Iska »

Tera2016, Вам обязательно пакетный файл нужен? Или можно PowerShell/WSH?
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Как построчно объединить два файла и создать новый

Сообщение Iska »

сработает если количество строк в файлах совпадает и если в имени исходных файлов нет пробелов



Код:

Код: Выделить всё

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set af=file_a.txt
set bf=file_b.txt
for /f "tokens=3" %%j in ('find /c /v "" %af%') do (
for /l %%i in (1,1,%%j) do (
set an=0
for /f %%a in (%af%) do (
set /a an=!an!+1
if !an!==%%i (
set bn=0
for /f %%b in (%bf%) do (
set /a bn=!bn!+1
if !bn!==%%i (
echo %%a;%%b >> result.txt
))))))

И поддержу Iska - на PS это все лучшее делается.
Аватара пользователя
Tera2016

Re: CMD/BAT - [решено] Как построчно объединить два файла и создать новый

Сообщение Tera2016 »

for /f "tokens=3" %%j in ('find /c /v "" %af%') do ( - смотрим сколько строк в файле

for /l %%i in (1,1,%%j) do ( - создаем цикл на это число строк. каждая строка - одно число, и хранится оно в переменной i

set an=0 - обнуляем пременную an

for /f %%a in (%af%) do ( - перебираем первый файл

set /a an=!an!+1 - и увеличиваем на 1 значение переменной an до тех пор пока

if !an!==%%i ( - оно не совпадет с переменной i, после того как совпало

set bn=0 - обнуляем переменную bn

for /f %%b in (%bf%) do ( - перебираем второй файл

set /a bn=!bn!+1 - и увеличиваем на 1 значение переменной bn до тех пор пока

if !bn!==%%i (- оно не совпадет с переменной i, после того как совпало

echo %%a;%%b >> result.txt - записываем результат в файл

)))))) - а это вообще просто смайлик
Аватара пользователя
Tera2016

Re: CMD/BAT - [решено] Как построчно объединить два файла и создать новый

Сообщение Tera2016 »

подскажите, учебник по написанию bat файлов с примерами, спасибо за описание.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»