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

Удаление первых n строк текстового файла

28.05.2013, 17:24. Показов 23676. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Приветствую всех обитателей данного форума!
Господа эксперты, очень нужна Ваша помощь, т.к. не нашел данную тему на форуме.

Есть текстовой файл (a.txt), в котором находятся исходные данные а именно 10 строк. Нужен скрипт (bat - файл) для удаления первых n строк текстового файла а полученный результат, переносил в текстовой файл допустим total.txt

И если позволите вопрос номер два:

Помогите с написанием bat - файла который бы удваивал n-ную строку текстового файла.

Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.05.2013, 17:24
Ответы с готовыми решениями:

Чтение первых 10-и строк из текстового файла
Доброго времени суток. В папке "Documents" (документы) есть папка с названием "wasd", а в папке файл, в котором нужно прочитать первые 10...

Удаление определённого количества первых символов в каждой строке текстового файла
Здравствуйте, подскажите пожалуйста. Имеется текстовый файл, в котором на каждой строке что-то написано, как можно удалить определенное...

Чтение первых 10-и строк из текстового файла, путь которого взят из переменной
Доброго времени суток. Есть переменная %DPath%, её путь определяется в реестре. И так, значение переменной %DPath% берётся из...

20
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
28.05.2013, 17:46
1)

Bash
1
2
3
4
5
6
7
@echo off
set n=10
set File_Src=textfile_in.txt
set file_Dest=textfile_out.txt
 
set /A n+=1
more /+%n% < "%File_Src%" > "%file_Dest%"
2)

Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
setlocal enableextensions enabledelayedexpansion
set n=10
set File_Src=textfile_in.txt
set file_Dest=textfile_out.txt
 
cd.>"%file_Dest%"
for /f "usebackq delims=" %%a in ("%File_Src%") do (
  set /A C+=1
  if !C!==%n% echo %%a>>"%file_Dest%"
  echo %%a>>"%file_Dest%"
)
1
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
28.05.2013, 18:32
Цитата Сообщение от Dragokas Посмотреть сообщение
Bash
1
more /+%n% < "%File_Src%" > "%file_Dest%"
А не так?
Bash
1
more +%n% < "%File_Src%" > "%file_Dest%"
2
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 3
28.05.2013, 19:08  [ТС]
По двум скриптам не может найти указанный путь. Может быть так?

Bash
1
2
set file_in=a.txt
set file_out=total.txt
Добавлено через 20 минут
И по второму вопросу можно ли сделать выбор строки которую хочу удвоить?
Наподобие этого скрипта?

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
rem переход в папку бат файла - чтоб не указывать полный путь
cd /d %~dp0
cls
rem ввести имя файла
set name=1.txt
rem ввести номер строки
set /p number=ENTER NUMBER STRING:
for /f "usebackq  delims=" %%i in (`find /n /v "" %name% ^| find "[%number%]"`) do (set str=%%i)
rem пропуск лишних символов в начале строки
for /f "delims=] tokens=2" %%i in ("%str%") do (set str=%%i)
echo %str%
setlocal enabledelayedexpansion
set file_in=1.txt
set file_out=result.txt
if exist "%file_out%" del /f /q "%file_out%"
>nul find /i /v "%number%" < "%file_in%" >> "%file_out%"
echo %str%>>result.txt
echo Thats all
echo.
set /p st=DO YOU WANT TO OPEN TEXT? [y\n]:
if "%st%"=="y" start result.txt
exit
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
28.05.2013, 20:07
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
set file=1.txt
set out=2.txt
set counter=0
for /f "usebackq tokens=*" %%A IN ("%file%") DO (
 set /a counter=!counter!+1
 echo.!counter!^|%%A
)
set counter=0
:n
set /p n=Enter string number     ^>
if "%n%"=="" goto n
(for /f "usebackq tokens=*" %%A IN ("%file%") DO (
 set /a counter=!counter!+1
 if !counter!==!n! (echo.%%A)
 echo.%%A
))>"%out%"
pause>nul
exit /b
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
28.05.2013, 23:13
Цитата Сообщение от wopus Посмотреть сообщение
По двум скриптам не может найти указанный путь.
Так укажите правильный. Зачем имя переменной поменяли.
Цитата Сообщение от wopus Посмотреть сообщение
Наподобие этого скрипта?
Нет, он вытягивает строку с нужным номером и еще что-то непонятное..., а не то, что требуется в задаче.

Цитата Сообщение от FraidZZ Посмотреть сообщение
А не так?
А еще и нумерация ведется от нуля. Получается вот так правильно:

Bash
1
2
3
4
5
6
@echo off
set n=10
set File_Src=1.txt
set file_Dest=2.txt
 
more +%n% < "%File_Src%" > "%file_Dest%"
0
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 3
29.05.2013, 09:44  [ТС]
FraidZZ,
Dragokas, Ребята огромное Вам человеческое спасибо!!!
FraidZZ, Можно у Вас узнать, по второму скрипту что Вы предоставили. Как сделать так, что бы при вводе строки, консоль автоматом закрывалась и открывался сразу файл с результатом?
0
Особый статус
Эксперт WindowsВирусоборец
8429 / 1708 / 87
Регистрация: 15.04.2011
Сообщений: 5,520
29.05.2013, 11:38
Bash
1
2
start x:\1.txt
exit
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
29.05.2013, 13:28
Цитата Сообщение от wopus Посмотреть сообщение
FraidZZ, Можно у Вас узнать, по второму скрипту что Вы предоставили. Как сделать так, что бы при вводе строки, консоль автоматом закрывалась и открывался сразу файл с результатом?
Заменить 20ю строку на start "" "%out%"
0
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 10
01.09.2013, 17:47
Цитата Сообщение от Dragokas Посмотреть сообщение
Так укажите правильный. Зачем имя переменной поменяли.

Нет, он вытягивает строку с нужным номером и еще что-то непонятное..., а не то, что требуется в задаче.


А еще и нумерация ведется от нуля. Получается вот так правильно:

Bash
1
2
3
4
5
6
@echo off
set n=10
set File_Src=1.txt
set file_Dest=2.txt
 
more +%n% < "%File_Src%" > "%file_Dest%"
Помогите, а то у меня не получается.
Использовал вот этот скрипт:

Bash
1
2
3
4
5
6
7
@echo off
setlocal enableextensions enabledelayedexpansion
set n=10
set File_Src=1.txt
set file_Dest=2.txt
 
more +%n% < "%File_Src%" > "%file_Dest%"
У меня почему то получается, что из файла "2.txt" в файл "1.txt" копируются все строки, за исключением 10 первых.
А мне нужно, чтобы не копировалось а вырезалось (удалялось) указанное количество строк из файла "2.txt" и копировалось (вставлялось) в файл "1.txt".
Заранее спасибо за помощь.
0
5 / 5 / 0
Регистрация: 17.03.2021
Сообщений: 162
31.12.2021, 22:09
Цитата Сообщение от temphard Посмотреть сообщение
У меня почему то получается, что из файла "2.txt" в файл "1.txt" копируются все строки, за исключением 10 первых.
А мне нужно, чтобы не копировалось а вырезалось (удалялось) указанное количество строк из файла "2.txt" и копировалось (вставлялось) в файл "1.txt".
Заранее спасибо за помощь.
мне тоже такой скрипт понадобился.

может кто доработать ?
0
 Аватар для volodin661
6625 / 2256 / 346
Регистрация: 10.12.2013
Сообщений: 7,803
01.01.2022, 13:37
10D - эти 2 арабских цифры и 1 латинская буква потребуются, чтобы удалить 10 строк из одного файла
P - и эта одна латинская, чтобы вставить их в другой
0
6962 / 2857 / 1098
Регистрация: 06.06.2017
Сообщений: 9,694
01.01.2022, 13:46
Цитата Сообщение от Vadim89897575 Посмотреть сообщение
может кто доработать ?
Тут не доработать, а написать с нуля разве что.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@set @a=0/*
@set n=10
@set in=1.txt
@set out=2.txt
 
@cscript /nologo /e:jscript %0 %n% "%in%" "%out%"
@exit
 
*/a=WSH.Arguments
with(WSH.CreateObject("Scripting.FileSystemObject")){
  var all = openTextFile(a(1)).readAll()
  var rgx = eval('/^([^\\r\\n]*\\r?\\n){'+a(0)+'}/')
  openTextFile(a(1),2).write(all.match(rgx)[0].slice(0,-2))
  createTextFile(a(2),1).write(all.replace(rgx,''))
}
0
5 / 5 / 0
Регистрация: 17.03.2021
Сообщений: 162
01.01.2022, 17:37
FlasherX, у меня такое выдаётся (запускал C:\Test\1.cmd )

C:\Test\1.cmd(34, 7) Ошибка компиляции Microsoft JScript: Предполагается наличие ';'
0
5 / 5 / 0
Регистрация: 17.03.2021
Сообщений: 162
01.01.2022, 18:06
я в принципе нашёл уже вариант как зациклить поочерёдное выполнение cmd файлов.

может не особо красиво. но должно работать вроде.

на основе кода:

такой код - копирует из файла mainLink.cmd в файл OutFile.cmd - всё содержимое файла mainLink.cmd - кроме первых трёх строк

Code
1
2
3
4
5
6
7
@echo off
setlocal enableextensions enabledelayedexpansion
set n=3
set File_Src=mainLink.cmd
set file_Dest=OutFile.cmd
 
more +%n% < "%File_Src%" > "%file_Dest%"


прикрепил примеры в архиве.



но и от Вашего варианта не отказался бы. он наверное более будет правильным и прямым - без лишних операций
Вложения
Тип файла: rar Temp.rar (2.3 Кб, 5 просмотров)
0
6962 / 2857 / 1098
Регистрация: 06.06.2017
Сообщений: 9,694
01.01.2022, 18:32
Vadim89897575, а ничего, что в моём коде нет 34 строки?
Единственное, в 13-14 надо местами параметры к write() переставить, но к проблеме это не имеет отношения.
Windows Batch file
1
2
  openTextFile(a(1),2).write(all.replace(rgx,''))
  createTextFile(a(2),1).write(all.match(rgx)[0].slice(0,-2))
0
5 / 5 / 0
Регистрация: 17.03.2021
Сообщений: 162
01.01.2022, 21:34
FlasherX, пока что протестил свои скрипты.

теперь рабочий вариант цикла - поочерёдного запуска cmd.

Цитата Сообщение от FlasherX Посмотреть сообщение
Vadim89897575, а ничего, что в моём коде нет 34 строки?
сейчас попробую Ваши варианты
Вложения
Тип файла: rar Temp.rar (2.7 Кб, 2 просмотров)
0
5 / 5 / 0
Регистрация: 17.03.2021
Сообщений: 162
01.01.2022, 21:52
FlasherX,

C:\Temp\Ochered\Primer3\run.cmd(28, 11) Ошибка компиляции Microsoft JScript: Предполагается наличие ';'

сейчас так пишет

такой код:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@set @a=0/*
@set n=2
@set in=mainLink.cmd
@set out=Out.cmd
 
@cscript /nologo /e:jscript %0 %n% "%in%" "%out%"
@exit
 
*/a=WSH.Arguments
with(WSH.CreateObject("Scripting.FileSystemObject")){
  var all = openTextFile(a(1)).readAll()
  var rgx = eval('/^([^\\r\\n]*\\r?\\n){'+a(0)+'}/')
    openTextFile(a(1),2).write(all.replace(rgx,''))
  createTextFile(a(2),1).write(all.match(rgx)[0].slice(0,-2))
}
 
 
exit
0
6962 / 2857 / 1098
Регистрация: 06.06.2017
Сообщений: 9,694
01.01.2022, 22:10
Vadim89897575, вы опять показываете часть. Нет в коде 28 строки. Нижняя часть там тоже лишняя. Конец моего кода — это закрывающая фигурная скобка, не иначе. Проверяйте в исходном виде без каких либо добавок (кроме замены имён файлов).
0
5 / 5 / 0
Регистрация: 17.03.2021
Сообщений: 162
01.01.2022, 22:13
FlasherX, я думал в сообщении 13 - полный код.

если нет. напишите полный код сюда плизз. или где взять полный код ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.01.2022, 22:13
Помогаю со студенческими работами здесь

Вырезать из одного текстового файла определённое количество первых строк и вставить их в другой
Здравствуйте. Пожалуйста, помогите создать батник. Необходимо, чтобы из файла &quot;2.txt&quot; вырезалось (удалялось)...

Удаление определённых строк из текстового файла
помогите, нужен батник удаляющий определенные строки из текстового файла.

Удаление из текстового файла строк, имеющих одинаковые начальные подстроки, ограниченные заданным разделителем
Прив. Нужно удалить повторы, но только те повторы, которые перед разделителем |. Чтобы если батник нашел 2 одинаковых слов/строк перед...

Удаление первых 6-ти строк во всех текстовых файлах, находящихся в определённой папке
Привет. Пытаюсь создать BAT CMD файл удаляющий первые 6 строк в каждом файле папки. В папке приблизительно 170 файлов и таких папок 182...

Удаление определённого слова из текстового файла
Добрый день. Помогите пожалуйста, в 2.txt удалить определенное слово: TR aboutkoi, оставить все, что после него. Может его необходимо...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru