Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 03.10.2019
Сообщений: 13

Сделать из двух файлов третий

28.02.2020, 08:12. Показов 1681. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два файла file1.txt и file2.txt, из них нужно сделать file3.txt.
Из file2.txt нужно взять каждую 5 строку, то есть 5, 10, 15, 20... А из file1.txt строки 1,2,3,4,6,7,8,9,11..., то есть все строки которые не берутся из file2.txt. И всё это должно совместиться в file3.txt в том же порядке строк, как они берутся из исходных файлов. При этом в начале строк возможны отступы - табуляции, пробелы, и строки должны переноситься с этой табуляцией и пробелами, в тексте могут присутствовать например символ кавычек(если это важно), а сам текст может быть как английскими буквами, так и латиницей.
Прошу помочь, данное решение ищу уже давно, в кучи разнообразных примеров не нашёл мне подходящего, а сам разобраться с кодом самостоятельно не могу.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2020, 08:12
Ответы с готовыми решениями:

Поиск новейших версий файлов из одноимённых файлов, находящихся в двух каталогах, и перенос найденных в третий
Здравствуйте. Возникла необходимость в создании кода на batch, который делает следующее. Сначала код проверяет главную папку, содержащую...

Сравнение двух текстовых файлов и вывод уникальных строк в третий файл
Здравствуйте необходим батник, который сравнивает два текстовых файла и выводит уникальные строки в третий. Только есть небольшой нюанс,...

Сформировать из двух файлов третий
Даны два целочисленных файла, упорядоченных по возрастанию. Сформировать из данных файлов третий файл, который будет также упорядочен по...

9
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
28.02.2020, 14:08
Добрый день! Принципиально с какого файла (file1.txt или file2.txt) начинать брать строки?
0
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,888
28.02.2020, 15:47
Лучший ответ Сообщение было отмечено lf2mr как решение

Решение

N5.BAT

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@@  IF EXIST __%~N0.exe ( __%~N0.exe %* & EXIT /B ERRORLEVEL ) 
@@  FOR /F %%X IN ('DIR /B /S %WINDIR%\Microsoft.NET\Framework\VBC.EXE') DO @@(SET COMPILER=%%X)
@@  IF NOT DEFINED COMPILER (ECHO No .NET Compiler !! Goodbye & EXIT/B -1)
@@  FINDSTR /B /VC:@@  "%~F0" > %~N0.vb
@@  %COMPILER% %~N0.vb /OUT:__%~N0.exe /TARGET:exe && __%~N0.exe %* 
@@  EXIT/B ERRORLEVEL
 
 
imports System
imports System.IO
imports System.Text.Encoding
 
Module M
Sub main ()
 
    Dim reader1 As New StreamReader("file1.txt", GetEncoding(1251))
    Dim reader2 As New StreamReader("file2.txt", GetEncoding(1251))
    Dim N as Integer = 1
 
    Using writer As New StreamWriter ("file3.txt", false, GetEncoding(1251))
 
        Do Until reader1.EndOfStream or reader2.EndOfStream  
            
            Dim line1 = reader1.ReadLine
            Dim line2 = reader2.ReadLine
            
            If N mod 5 Then
                writer.WriteLine( line1 )
            Else
                writer.WriteLine( line2 )
            End If
 
            N = N + 1
        Loop 
 
    End Using
 
    Console.WriteLine("Result in file3.txt") 
 
End Sub
End Module
1
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
28.02.2020, 18:35
Цитата Сообщение от lf2mr Посмотреть сообщение
в том же порядке строк, как они берутся из исходных файлов. При этом в начале строк возможны отступы - табуляции, пробелы, и строки должны переноситься с этой табуляцией и пробелами, в тексте могут присутствовать например символ кавычек
не рисковал бы я на cmd это клепать.
0
0 / 0 / 0
Регистрация: 03.10.2019
Сообщений: 13
29.02.2020, 07:09  [ТС]
Огромное спасибо. Работает n5.bat. Мои мучения нескольких месяцев решились за менее чем минуту после запуска этого кода.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
04.03.2020, 14:33
Цитата Сообщение от lf2mr Посмотреть сообщение
Работает n5.bat
В случае с Вашей постановкой задачи представленный код отрабатывает корректно не во всех возможных вариантах структуры содержимого file1.txt и file2.txt
Как я вижу решение:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
@echo off
setlocal enabledelayedexpansion
set /A summ_1=0
set /A summ_2=0
set /A schetchik=5
for /f "delims=" %%a in (file1.txt) do (
    set /A summ_1+=1
    echo !summ_1! %%a>>file1work.txt
)
for /f "delims=" %%a in (file2.txt) do (
    set /A summ_2+=1
    echo !summ_2! %%a>>file2work.txt
)
if !summ_1!==0 (
    if !summ_2!==0 (
        echo В file1.txt и в file2.txt отсутствуют строки. Сценарий будет завершен
        pause
        exit
    )
)
if !summ_2! lss !schetchik! (
    if !summ_1!==0 (
        del file2work.txt
        echo В файле file1.txt отсутствуют строки. В файле file2.txt менее 5-ти строк. Сценарий будет завершен
        pause
        exit
    )
)
if !summ_2! lss !schetchik! (
    for /f "delims=" %%a in (file1.txt) do (
        echo %%a>>file3.txt
    )
    del file1work.txt
    if exist file2work.txt (
        del file2work.txt
    )
    if !summ_2!==0 (
        echo В файле file2.txt строки отсутствуют. Все строки из file1.txt скопированы в file3.txt. Сценарий будет завершен
    ) else (
        echo В file2.txt менее 5-ти строк. Все строки из file1.txt скопированы в file3.txt. Сценарий будет завершен
    )   
    pause
    exit
)
:step_3
if defined raznost (
    set /A raznost=!raznost!-!schetchik!
) else (
    set /A raznost=!summ_2!-!schetchik!
)
if !raznost! gtr 0 (
    set /A oborot+=1
    goto step_3
)
if !raznost! equ 0 (
    set /A oborot+=1
    goto step_1
)
if !raznost! lss 0 (
    goto step_1
)
:step_1
if !summ_1!==0 goto step_2
for /f "tokens=1*" %%a in (file1work.txt) do (
    if defined granica (
        if %%a equ !granica! (
            echo %%b>>file3.txt
        )
        if %%a gtr !granica! (
            if %%a lss !schetchik! (
                echo %%b>>file3.txt
            )
        )
        if %%a equ !schetchik! (
            goto step_2
        )
    ) else (
        if %%a lss !schetchik! (
            echo %%b>>file3.txt
        )
        if %%a equ !schetchik! (
            goto step_2
        )
    )
)
:step_2
if not defined celoe (
    if !summ_2! lss !summ_1! (
        if !raznost! leq 0 (
            set /A celoe=!oborot!*5
        )
    )
)
if not defined celoe (
    if !summ_2! gtr !summ_1! (
        if !raznost! leq 0 (
            set /A celoe=!oborot!*5
        )
    )
)
if not defined celoe (
    if !summ_2! equ !summ_1! (
        if !raznost! leq 0 (
            set /A celoe=!oborot!*5
        )
    )
)
if defined schetchik (
    set /A schetchik_oborotov+=1
)
for /f "tokens=1*" %%a in (C:\zadacha5\file2work.txt) do (
    if %%a equ !schetchik! (
        echo %%b>>file3.txt
        if !schetchik_oborotov! equ !oborot! goto step_4
        set /A granica=!schetchik!+1
        set /A schetchik+=5
        goto step_1
    )
)
:step_4
if !summ_2!==!summ_1! (
    if !raznost! lss 0 (
        set /A final=!celoe!+1
        for /f "tokens=1*" %%a in (file1work.txt) do (
            if %%a geq !final! (
                if %%a leq !summ_1! (
                    echo %%b>>file3.txt
                )
            )
        ) 
        del file1work.txt
        del file2work.txt
        exit
    )
)
if !summ_2!==!summ_1! (
    del file1work.txt
    del file2work.txt
    exit
)
if !summ_2! gtr !summ_1! (
    if !raznost! lss 0 (
        set /A final=!celoe!+1
        for /f "tokens=1*" %%a in (file1work.txt) do (
            if %%a geq !final! (
                if %%a leq !summ_1! (
                    echo %%b>>file3.txt
                )
            )
        )
    )
)   
if !summ_2! gtr !summ_1! (
    for /f "tokens=1*" %%a in (file2work.txt) do (
        set /A schetchik+=5
        if %%a equ !schetchik! (
            echo %%b>>file3.txt
        )
    )
    del file1work.txt
    del file2work.txt   
    goto eof
)
set /A final=!celoe!+1
for /f "tokens=1*" %%a in (file1work.txt) do (
        if %%a geq !final! (
            if %%a leq !summ_1! (
                echo %%b>>file3.txt
            )
        )
)
del file1work.txt
del file2work.txt
P.S. Единственный момент, который я не учёл заключается в том, что строки копируются без ведущих пробелов и табуляций. Как реализовать не знаю.
0
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,888
04.03.2020, 15:39
Цитата Сообщение от Karen87 Посмотреть сообщение
представленный код отрабатывает корректно не во всех возможных вариантах структуры содержимого file1.txt и file2.txt
Например ?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
04.03.2020, 15:53
Цитата Сообщение от volodin661 Посмотреть сообщение
Например ?
Давайте возьмём банальный пример:
1) Содержимое файла file1.txt - список чисел от 1 до 15
2) Содержимое файла file2.txt - список букв латинского алфавита от a до n (13 букв)
Результатом отрабатывания Вашего сценария будет:
1
2
3
4
e
6
7
8
9
k
11
12
13
Результатом отрабатывания моего сценария будет:
1
2
3
4
e
6
7
8
9
k
11
12
13
14
15
0
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,888
04.03.2020, 16:22
то есть, случай, когда в обрабатываемых входных файлах неодинаковое количество строк,
ты называешь 'возможный вариант структуры'.

Прям, не человек, а поэт.

Но у ТС не было никаких пожеланий по стратегии в таких случаях.

Тогда почему ты называешь решение #3 некорректным ?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
04.03.2020, 16:38
Цитата Сообщение от volodin661 Посмотреть сообщение
то есть, случай, когда в обрабатываемых входных файлах неодинаковое количество строк,
ты называешь 'возможный вариант структуры'.
Почему бы и нет
Цитата Сообщение от volodin661 Посмотреть сообщение
Прям, не человек, а поэт.
Поэзию от прозы следовало бы отличать в Вашем почтенном возрасте
Цитата Сообщение от volodin661 Посмотреть сообщение
Но у ТС не было никаких пожеланий по стратегии в таких случаях.
Так же, как и не было условия, что количество строк в обоих файлах одинаковое
Цитата Сообщение от volodin661 Посмотреть сообщение
Тогда почему ты называешь решение #3 некорректным ?
Ответ в п. 6
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2020, 16:38
Помогаю со студенческими работами здесь

Из двух файлов получить третий
Из двух файлов получить третий, элементами которого будут являться те, порядковый номер который кратен 5. Содержимое 1 файла: 1 2 3 4 5...

Программа слияния двух файлов в третий
1)Нужно написать программу слияния двух файлов в третий. Файл-результат формируется чередованием N-ок символов первого и второго...

Различия двух файлов записать в третий
Есть 2 текстовых файла (1.txt , 2.txt) 1.txt: C:\Assch C:\boot.ini C:\CONFIG.SYS 2.txt: C:\Assch C:\AUTOEXEC.BAT

Чтение из двух файлов и запись в третий
Имеется следующая задача: в цикле подсчитывается определенное значение функции fe, зависящее от одного параметра(вводится) и записывается в...

Как перенести данные с двух файлов в третий?
Всем привет. есть 2 файла с данными. третий файл консолидирует данные из 2х файлов. Задача проста: необходимо в зависимости от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru