Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] разбить по строкам txt

Ответить
Настройки темы
CMD/BAT - [решено] разбить по строкам txt

Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


есть list.txt
как разбить его на list01.txt, list02.txt ... по 50 строк?

т.е. если есть list.txt в котором 400 строк - то разбить его на 8 txt-файлов по 50 строк

Отправлено: 20:40, 29-08-2010

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить 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:
Foreigner, sed это программа, так понимаю, для поиска и замены текста? »
Это портированная из Unix утилита, редактор потока (Stream EDitor — SED). Для Windows можно взять, например, отсюда.

Отправлено: 21:06, 07-11-2015 | #41



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить 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


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Iska, спасибо большое конечно за vbs, но на моей машине эти скрипты не запустятся,так же как и js

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 22:01, 07-11-2015 | #43


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата blackeangel:
но на моей машине эти скрипты не запустятся,так же как и js »
Запрет на исполнение скриптов?

Отправлено: 22:01, 07-11-2015 | #44


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Iska, наверное, поэтому предпочтение exe и bat

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 22:17, 07-11-2015 | #45


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Georgio, спасибо, скрипт отработал великолепно

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 09:37, 08-11-2015 | #46


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Foreigner, спасибо за вывод из файла нужных строк

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 09:52, 08-11-2015 | #47


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить 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


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Georgio:
blackeangel, надо было предупредить, что у Вас исходный файл в формате UNIX.

Полученные файлы будут в формате Windows.
А как тогда вернуть назад в формат Unix?

Отправлено: 17:51, 09-11-2015 | #49


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте! Облазил весь интернет, решения не нашел, как модифицировать примеры в этом топике под себя понять не могу, поэтому прошу вашей помощи, надеюсь, не откажете.
Ситуация следующая: имеется file.txt, который нужно разбить на равное количество строк (с этим я справился), но сохранить результаты в разные папки (их список построчно лежит в list.txt) с одним и тем же (finish.txt) именем. Папок физически на диске нет, т.е. их надо сначала создать. Названия папок могут содержать точки.
Подскажите, пожалуйста, как это можно реализовать. Большое вам спасибо.

Отправлено: 09:19, 10-11-2015 | #50



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] разбить по строкам txt

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход