Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как построчно объединить два файла и создать новый (http://forum.oszone.net/showthread.php?t=311216)

Tera2016 05-02-2016 15:12 2602871

Как построчно объединить два файла и создать новый
 
Добрый день!
Подскажите как построчно объединить два файла и создать новый.
Разделитель между столбцами ";".
Файл test1.txt
Код:

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

Файл test2.txt
Код:

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

Файл final.txt
Код:

Строка1;Значение1
Строка2;Значение2
Строка3;Значение3
..........
..........
..........


Iska 05-02-2016 15:21 2602875

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

Elven 05-02-2016 17:10 2602902

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

@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 05-02-2016 19:18 2602943

а можете объяснить операторы?

Elven 05-02-2016 19:25 2602945

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 - записываем результат в файл
)))))) - а это вообще просто смайлик

Iska 06-02-2016 04:48 2603022

Цитата:

Цитата Elven
)))))) - а это вообще просто смайлик »

Шутник :).

Tera2016 06-02-2016 06:45 2603028

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


Время: 22:03.

Время: 22:03.
© OSzone.net 2001-