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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Разделение текстового файла на части или по строкам.

Ответить
Настройки темы
VBS/WSH/JS - Разделение текстового файла на части или по строкам.

Пользователь


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

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


Есть текстовый файл,с большим количеством строк.
Как лучше и быстрее разделить такое кол-во файлов средствами .vbs
Можно и .bat.
В идеале, чтобы в каждом новом текстовом файле была одна строка.
И новые имена текстовых файлов были от 1 и выше,в формате с одной цифрой.(т.е. не 01,или 001, а 1).

Отправлено: 18:26, 25-10-2020

 

Забанен


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

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


Людям свойственно усложнять абсолютно всё, в том числе элементарные задачи. Можно писать "портянки" на WSH, вот только зачем, когда уже десятки лет существуют проверенные временем инструменты, позволяющие решать задачи коротко и ясно. Например:
Код: Выделить весь код
echo.>>file.txt && (miniperl -pe "s/^/>$..txt echo /" file.txt | cmd>nul) && del /f/q file.txt
Можно awk'ом или любыми другими утилитами и интерпретаторами. Что касается лучше и быстрее... если отбросить в сторону нюансы архитектур процессоров, каждый будет пропихивать свои идеи. А что из того верно, выводы делает каждый сам. Ибо для чего человеку мозг?

Отправлено: 21:24, 25-10-2020 | #2



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

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


Ветеран


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

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


Цитата serg515:
Есть текстовый файл,с большим количеством строк. »
Не помешал бы образец этого текстового файла с большим количеством строк в архиве.

А так:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFile

Dim objFSO
Dim arrContent

Dim i
Dim strLine


If WScript.Arguments.Count = 1 Then
	strSourceFile = WScript.Arguments.Item(0)
	
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	If objFSO.FileExists(strSourceFile) Then
		With objFSO.OpenTextFile(strSourceFile)
			arrContent = Split(.ReadAll(), vbCrLf)
			.Close
		End With
		
		i = 0
		
		For Each strLine In arrContent
			i = i + 1
			
			With objFSO.CreateTextFile(CStr(i) & ".txt", True)
				.Write strLine
				.Close
			End With
		Next
	Else
		WScript.Echo "Can't find source file [" & strSourceFile & "]."
		WScript.Quit 2
	End If
	
	Set objFSO = Nothing
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file>"
	WScript.Quit 1
End If

WScript.Quit 0

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

Отправлено: 22:14, 25-10-2020 | #3


Забанен


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

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


Iska, а использовать потоки уже не модно?

Отправлено: 22:28, 25-10-2020 | #4


Пользователь


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

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


Вложения
Тип файла: zip strings.zip
(27.4 Kb, 4 просмотров)

Цитата Iska:
Не помешал бы образец этого текстового файла с большим количеством строк в архиве »
например этот,хотя реальное кол-во строк больше.

Отправлено: 04:49, 26-10-2020 | #5


Ветеран


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

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


Цитата greg zakharov:
Iska, а использовать потоки уже не модно? »
После DOS перестало быть модным. Это мне под Far Manager'ом осталось удобно.


serg515, пробуйте. Должно работать.

Отправлено: 05:25, 26-10-2020 | #6


Пользователь


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

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


Цитата Iska:
<Source file> »
прописываю имя файла.что-то нужно ещё менять или дополнять?

Отправлено: 06:08, 26-10-2020 | #7


Ветеран


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

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


Цитата serg515:
что-то нужно ещё менять или дополнять? »
Нет:
Скрытый текст

Отправлено: 06:59, 26-10-2020 | #8


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell:
Код: Выделить весь код
$c = 1
gc "D:\temp\strings.txt" |% {
Set-Content "D:\temp\splitted\$c.txt" -Value $_
$c++
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:21, 26-10-2020 | #9


Забанен


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

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


DJ Mogarych, а что мешает обойтись единственным for'ом? Хотя...
Код: Выделить весь код
(Select-String \S X:\path\file.txt).ForEach{$_.Line>"$($_.Linenumber).txt"}

Последний раз редактировалось greg zakharov, 26-10-2020 в 20:47.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:41, 26-10-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Разделение текстового файла на части или по строкам.

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Разбите текстового файла на отдельные файлы по определенному условию Artas28 Скриптовые языки администрирования Windows 12 05-04-2019 19:10
CMD/BAT - Разделение текстового файла на переменное количество частей и перемещение этих частей krokradio Скриптовые языки администрирования Windows 10 29-02-2016 13:16
CMD/BAT - Сборка текстового файла из содержимого другого текстового файла icomboy Скриптовые языки администрирования Windows 0 10-09-2013 15:17
CMD/BAT - Разделение текстового файла на части без разделения абзацев Re:Flex Скриптовые языки администрирования Windows 9 09-07-2013 04:35
Shell. Чтение текстового файла по строкам. Delphin911 Общий по Linux 11 07-04-2005 17:58




 
Переход