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

Скопировать часть файла в середину другого файла

07.02.2013, 16:45. Показов 9156. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, надеюсь на вашу помощь. Собственно проблема такая - можно ли, и если можно, то как осуществить копирование строк из одного текстового файла в определенное место второго ?

Добавлено через 6 часов 53 минуты
Окей, я немного продвинулся в своих попытках и могу чуть уточнить условия. Во втором файле необходимо удалить все строки, содержащие буквы и оставшееся содержимое вставить в конец первого файла. Послед этого в конце первого файла написать END. Так вроде проще, может кто-нибудь поможет ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.02.2013, 16:45
Ответы с готовыми решениями:

Скопировать определенную строчку из одного файла и вставить в определенную строчку другого файла
как можно скопировать первые несколько символов (букв) из определенной строки (например 5-ой) modems.txt, далее найти в parametr.txt слово...

Как скопировать часть текста txt-файла в виде списка событий c условием - текущая дата?
Здравствуйте, уважаемые форумчане! Очень надеюсь на Вашу профессиональную помощь в следующей задаче. Есть txt-файл "массив...

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

9
 Аватар для Badger
94 / 94 / 4
Регистрация: 25.06.2012
Сообщений: 278
07.02.2013, 17:23
Может проще будет найти то, что Вам нужно вставить в конец другого файла?
0
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 5
07.02.2013, 17:32  [ТС]
C первой задачей вроде разобрался вот таким корявым способом, уверен, что можно сделать это красивее.
Во втором файле, кроме всех строк, содержащих буквы необходимо удалить несколько строк с цифрами, но между этими цифрами стоит по пять пробелов, в строках с буквами (кроме строк со словом COMPOSITION) также есть пять пробелов, так что я вышел из ситуации так:
Bash
1
2
3
find /V "     "  po1 >> 1.txt
find /V "COMPOSITION"  1.txt >> model
del 1.txt
model это исходный файл, в который необходимо было скопировать нужные цифровый строки. Проблемой стало то, что при копировании окончательного содержимого без букв из файла 1.txt в model копировалось также и название первого файла в виде "-------- 1.TXT" Обошел это я тем же способом:
Bash
1
2
find /V "----------" model >> model2
del model
при этом название предидущего файла "-------- model" оказалось в начале файла model2, что не мешает работе.
Извините, что так путанно получилось) Уверен, что можно все сделать проще.

Осталось только в конец файла model2 вставить "END" )

Добавлено через 4 минуты
Цитата Сообщение от Badger Посмотреть сообщение
Может проще будет найти то, что Вам нужно вставить в конец другого файла?
Сначала думал об этом, но нужные мне строки для копирования это несколько сотен блоков вот такого вида:

0.74804E-02 0.17253E-04 0.96287E-03 0.41577E-03 0.98538E-04 0.77108E-04 0.13738E-05 0.19701E-04 0.10134E-04 0.18362E-06
0.46545E-05 0.10485E-05 0.12419E-05 0.39887E-06 0.38168E-06 0.97072E-08 0.30389E-03 0.18790E-01 0.65330E-02 0.16070E-01
0.24940E-02 0.35930E-04 0.16480E-03 0.00000E+00 0.00000E+00 0.00000E+00 0.45400E-04 0.76820E-04.

Которые еще разделены между собой строкой с текстом.
0
 Аватар для Badger
94 / 94 / 4
Регистрация: 25.06.2012
Сообщений: 278
07.02.2013, 17:40
Цитата Сообщение от pashgun Посмотреть сообщение
Осталось только в конец файла model2 вставить "END" )
Bash
1
echo "END" >> model2
1
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
07.02.2013, 19:49
Bash
1
2
3
4
5
6
7
8
9
10
11
@echo off
Setlocal enabledelayedexpansion
Set file1=file.txt
Set file2=file2.txt
For /f "usebackq tokens=*" %%a IN ("!file2!") DO (
 Set /a math=%%a
 If not "%%a"=="0" (
  If not !math!==0 (Echo %%a>>"!file!")
 ) else (Echo %%a>>"!file!")
)
Echo End>>"!file!"
Добавлено через 1 минуту
Стоп, в твоем файле в нужных тебе строках все-таки есть буквы?
1
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 5
08.02.2013, 11:04  [ТС]
Цитата Сообщение от FraidZZ Посмотреть сообщение
Добавлено через 1 минуту
Стоп, в твоем файле в нужных тебе строках все-таки есть буквы?
Нет, в нужных мне строках букв нет. Если совсем конкретно, то вот так выглядит начало второго файла:

Кликните здесь для просмотра всего текста

" EXTERNAL STORAGE PARAMETERS
2 10 1 4246 11 1 4246
ARRAY
165 11 0 0 26 165 28 1
QUANTITY OF ROWS
49 25
QUANTITY OF LAYERS = 89
OLD SOLUTION HAS THE FOLLOWING PARAMETERS:
FF= 0.99408E-04 CONVERGENCE OF CORRECTIONS TPOP= 0.14153E-01

COMPOSITION OF ZONE 1
0.74804E-02 0.17253E-04 0.96287E-03 0.41577E-03 0.98538E-04 0.77108E-04 0.13738E-05 0.19701E-04 0.10134E-04 0.18362E-06
0.46545E-05 0.10485E-05 0.12419E-05 0.39887E-06 0.38168E-06 0.97072E-08 0.30389E-03 0.18790E-01"
0.65330E-02... "


Удалить нужно первые строчки (как видно, в них тоже есть несколько строк не содержащих буквы) и строки "COMPOSITION OF ZONE n".

Пока твой вариант не работает, попробую поразбираться. Спасибо.

Добавлено через 12 минут
P.S. В первых строках, которые нужно удалить, есть по пять пробелов (в скопированном тексте они убрались до одного), чем я и воспользовался в своем варианте. Соответственно в качестве признака для удаления ненужных строк можно оставить пять пробелов и слово "COMPOSITION"

Добавлено через 2 часа 3 минуты
Всё оказалось еще немного сложнее. Мой корявый способ работает, всё что нужно копируется в конец файла, END в конце стоит, но вдруг оказывается, что эти нужные строки надо вставить всё-таки не в конец первого файла, а в определенное место в середине. Если я правильно понимаю, то мне надо оставить в первом файле метку, выполнить ее поиск и после нее вставить нужные строки.
0
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
08.02.2013, 12:49
pashgun, довольно сложно понять, что хочется. Тут не приёмная телепатов. Прикрепите к посту образцы двух текстовых файлов: первый - что есть, второй - что надо.
0
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 5
08.02.2013, 13:39  [ТС]
Цитата Сообщение от sov44 Посмотреть сообщение
pashgun, довольно сложно понять, что хочется. Тут не приёмная телепатов. Прикрепите к посту образцы двух текстовых файлов: первый - что есть, второй - что надо.
Понимаю, сейчас попробую сформулировать еще раз.
У меня есть два файла: файл1 - входные данные для некой программы; и файл2, кусочек которого я привел в посте выше. Итого надо из файла2 выдернуть все строки вида
Кликните здесь для просмотра всего текста
0.74804E-02 0.17253E-04 0.96287E-03 0.41577E-03 0.98538E-04 0.77108E-04 0.13738E-05 0.19701E-04 0.10134E-04 0.18362E-06
0.46545E-05 0.10485E-05 0.12419E-05 0.39887E-06 0.38168E-06 0.97072E-08 0.30389E-03 0.18790E-01 0.65330E-02 0.16070E-01
0.24940E-02 0.35930E-04 0.16480E-03 0.00000E+00 0.00000E+00 0.00000E+00 0.45400E-04 0.76820E-04.

и вставить их в определенное место файла1, конкретно после строки "RO="


Программированием я раньше не занимался, поэтому у меня с этим очень не очень. На данный момент я нашел такое решение:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
:: вывод из файла2 строк не содержащих пять пробелов во временный файл 1.txt 
find /V "     "  file2 >> 1.txt
:: вывод из 1.txt строк не содержащих слов COMPOSITION 
find /V "COMPOSITION"  1.txt >> tmp
del 1.txt 
:: Получили то, что надо. Следующими манипуляциями убираем строку "------ 1.txt" (которая создается 
:: и передается автоматически) в начало файла, где она не мешает
find /V "----------"  tmp >> file1_tmp
del tmp
copy file1_tmp file1
del file1_tmp
:: Перед этим я заранее разбил файл1 на две части. В первой оставил всё до места после которого
:: нужно вставить строки из файла2. Вторую часть, которая должна идти после вставленных строк, 
:: я сохранил в файл temp. После того, как я вставил в файл1 нужные строки, копируется содержание
:: файла temp в конец файла1
type temp >> file1
Так всё работает, но есть очевидное неудобство в том, что надо разбивать файл1 на две части, чтобы потом собрать из них один рабочий файл. К тому же решение, когда я убираю строки с пятью пробелами, а потом строки со словом COMPOSITION не универсальное. В-общем буду разбираться дальше )
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
08.02.2013, 14:51
Цитата Сообщение от pashgun Посмотреть сообщение
0.74804E-02 0.17253E-04 0.96287E-03 0.41577E-03 0.98538E-04 0.77108E-04 0.13738E-05 0.19701E-04 0.10134E-04 0.18362E-06
Но здесь же есть буква Е!
1
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 5
08.02.2013, 15:21  [ТС]
Цитата Сообщение от FraidZZ Посмотреть сообщение
Но здесь же есть буква Е!
Чёрт, рили сорри, что путаю вас, народ. Я так привык обращаться с числами в таком формате, что просто вообще в упор не воспринял Е за букву. Да уж.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2013, 15:21
Помогаю со студенческими работами здесь

Вставить N последних строк одного TXT-файла в конец другого TXT-файла
Здравствуйте, подскажите пожалуйста, как можно скопировать n последних строк одного тхт файла и вставить их в конец другого тхт файла?

Запуск cmd файла с определенного места в его коде из другого cmd файла
Здравствуйте. Требуется команда для запуска батника с метки внутри него, а не с первой команды в нем. Как выразиться яснее не придумал.

Как скопировать 2 последних по дате файла
Добрый день! Есть батник, который копирует из нужной папки один последний по дате файл: pushd "c:\Program Files...

Скопировать слова из одного файла в два другие
Здравствуйте. Не подскажите как можно в bat сделать так что бы он из первой строки брал 3 и 4 слово и копировал эти два слова в разные...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru