|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] разбить по строкам txt |
|
CMD/BAT - [решено] разбить по строкам txt
|
Старожил Сообщения: 267 |
есть list.txt
как разбить его на list01.txt, list02.txt ... по 50 строк? т.е. если есть list.txt в котором 400 строк - то разбить его на 8 txt-файлов по 50 строк |
|
Отправлено: 20:40, 29-08-2010 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать blackeangel, у Вас там в файле Unix'овские концы строк. И хотелось бы увидеть образцы Ваших файлов, из которых Вы будете делать замену (разумеется, так же — в архиве).
Вот примерная болванка на WSH на пробу: Скрытый текст
Option Explicit Dim strSourceFile Dim strReplaceFile Dim strContent Dim strReplace strSourceFile = "C:\Мои проекты\init\init.rc" strReplaceFile = "C:\Мои проекты\init\Replace.rc" With WScript.CreateObject("Scripting.FileSystemObject") If .FileExists(strSourceFile) Then If .FileExists(strReplaceFile) Then With .OpenTextFile(strSourceFile) strContent = .ReadAll() .Close End With With .OpenTextFile(strReplaceFile) strReplace = .ReadAll() .Close End With With WScript.CreateObject("VBScript.RegExp") .Global = True .MultiLine = True .IgnoreCase = True .Pattern = "^( #Camera\n)([\s\S]+?)(\n #/dev/RT_Monitor)$" If .Test(strContent) Then strContent = .Replace(strContent, "$1" & strReplace & "$3") Else WScript.Echo "Can't find pattern [" & .Pattern & "]." WScript.Quit 3 End If End With With .CreateTextFile(strSourceFile + ".txt") .Write strContent .Close End With Else WScript.Echo "Can't find replace file [" & strReplaceFile & "]." WScript.Quit 2 End If Else WScript.Echo "Can't find source file [" & strSourceFile & "]." WScript.Quit 1 End If End With WScript.Quit 0 Сохраните приведённый код в файл с расширением .vbs, замените выделенное на пути к Вашим реальным исходному и заменяющему файлам. Результирующий файл получит имя исходного плюс «.txt». Посмотрите, что получается. Цитата blackeangel:
|
|
Отправлено: 21:06, 07-11-2015 | #41 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать blackeangel, надо было предупредить, что у Вас исходный файл в формате UNIX.
Код: @echo off set "file=init.rc" set "marker_1=#Camera" set "marker_2=#/dev/RT_Monitor" for /f "delims=:" %%i in (' 2^>nul findstr/iln /c:"%marker_1%" /c:"%marker_2%" "%file%" ') do ( if not defined x (set x=%%i) else (set y=%%i) ) for %%i in ("%file%") do ( for %%? in (1 2 3) do 2>nul del "%%~ni_%%?%%~xi" for /f "delims=" %%j in ('2^>nul findstr/n "^" %%i') do ( set z=%%j for /f "delims=:" %%k in ("%%j") do ( if %%k leq %x% (set n=1) else (if %%k lss %y% (set n=2) else (set n=3)) for /f %%l in ('set/a n') do >>"%%~ni_%%l%%~xi" cmd/v/c echo.!z:*:^^=! ) ) ) exit/b Полученные файлы будут в формате Windows. |
Последний раз редактировалось Georgio, 08-11-2015 в 11:21. Отправлено: 21:10, 07-11-2015 | #42 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Iska, спасибо большое конечно за vbs, но на моей машине эти скрипты не запустятся,так же как и js
|
------- Отправлено: 22:01, 07-11-2015 | #43 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blackeangel:
|
|
Отправлено: 22:01, 07-11-2015 | #44 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Iska, наверное, поэтому предпочтение exe и bat
|
------- Отправлено: 22:17, 07-11-2015 | #45 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Georgio, спасибо, скрипт отработал великолепно
|
------- Отправлено: 09:37, 08-11-2015 | #46 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Foreigner, спасибо за вывод из файла нужных строк
|
------- Отправлено: 09:52, 08-11-2015 | #47 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Сделал сегодня так
echo #blackeangel>>init.rc ::выносит нужные строки в файл :: 1й кусок sed.exe -n "/# Copyright/,/#Camera/ p" init.rc | sed -r "/^.+#.+$/ d" > init1.rc :: 2й кусок sed.exe -n "/#Camera/,/#\/dev\/RT_Monitor/ p" init.rc | sed -r "/^.+#.+$/ d" > init2.rc :: 3й кусок sed.exe -n "/#\/dev\/RT_Monitor/,/#blackeangel/ p" init.rc | sed -r "/^.+#.+$/ d" > init3.rc Файлы прилагаются,оригинал и разбитые |
Последний раз редактировалось blackeangel, 03-04-2017 в 22:53. Отправлено: 08:55, 09-11-2015 | #48 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Цитата Georgio:
|
|
Отправлено: 17:51, 09-11-2015 | #49 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Здравствуйте! Облазил весь интернет, решения не нашел, как модифицировать примеры в этом топике под себя понять не могу, поэтому прошу вашей помощи, надеюсь, не откажете.
Ситуация следующая: имеется file.txt, который нужно разбить на равное количество строк (с этим я справился), но сохранить результаты в разные папки (их список построчно лежит в list.txt) с одним и тем же (finish.txt) именем. Папок физически на диске нет, т.е. их надо сначала создать. Названия папок могут содержать точки. Подскажите, пожалуйста, как это можно реализовать. Большое вам спасибо. |
Отправлено: 09:19, 10-11-2015 | #50 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] как разбить один txt на несколько | shadowbat | Скриптовые языки администрирования Windows | 7 | 05-10-2010 07:10 | |
[решено] Вставить строчку из одного txt в оределённое место другого txt | ZeroCrash | AutoIt | 7 | 13-07-2009 07:35 | |
Shell. Чтение текстового файла по строкам. | Delphin911 | Общий по Linux | 11 | 07-04-2005 17:58 | |
Разбить винчестер | Guest | Microsoft Windows 2000/XP | 9 | 01-03-2003 23:50 | |
Разбить MP3 | Rom K | Хочу все знать | 9 | 09-10-2002 12:45 |
|