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

Показать сообщение отдельно

Ветеран


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

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


coollogan, можете попробовать на WSH (используем OLE DB):
Скрытый текст
Код: Выделить весь код
Option Explicit

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = 1


Dim strSourceFile
Dim strDestFile
Dim strPath2Schema

Dim objRecordset

Dim dtStartDateTime


strSourceFile = "PS.txt"
strDestFile   = "ResultFile.csv"

With WScript.CreateObject("Scripting.FileSystemObject")
	strPath2Schema = .GetParentFolderName(WScript.ScriptFullName)
	
	dtStartDateTime = Now()
	WScript.Echo "Start at:  " & CStr(dtStartDateTime)
	
	If Not .FileExists(.BuildPath(strPath2Schema, "Schema.ini")) Then
		With .CreateTextFile(.BuildPath(strPath2Schema, "Schema.ini"), True)
			.Write _
				"[" & strSourceFile & "]" & vbCrLf & _
				"ColNameHeader=False" & vbCrLf & _
				"CharacterSet=1251" & vbCrLf & _
				"Format=Delimited(;)" & vbCrLf & _
				"TextDelimiter=none" & vbCrLf & _
				"Col1=Url Text" & vbCrLf & _
				"" & vbCrLf & _
				"[" & strDestFile & "]" & vbCrLf & _
				"ColNameHeader=True" & vbCrLf & _
				"CharacterSet=1251" & vbCrLf & _
				"Format=CSVDelimited" & vbCrLf & _
				"TextDelimiter=none" & vbCrLf & _
				"Col1=Url Char Width 255" & vbCrLf & _
				"Col2=Count Integer" & vbCrLf
			
			.Close
		End With
	End If
	
	If .FileExists(.BuildPath(strPath2Schema, strDestFile)) Then
		.DeleteFile .BuildPath(strPath2Schema, strDestFile), True
	End If
	
	WScript.CreateObject("ADODB.Recordset").Open _
		"SELECT S.[url], COUNT(S.[url]) AS [Count] INTO [" & strDestFile & "] " & _
		"FROM [" & strSourceFile & "] AS S " & _
		"GROUP BY S.[url] " & _
		"ORDER BY COUNT(S.[url]) DESC", _
		"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath2Schema & ";Extended Properties=""text;""", _
		adOpenStatic, adLockOptimistic, adCmdText
	
	WScript.Echo "Finish at: " & CStr(Now())
	WScript.Echo "Total: " & CStr(DateDiff("s", dtStartDateTime, Now())) & " second(s)."
End With

WScript.Quit 0

Поместите скрипт рядом с Вашим файлом PS.txt.

У меня получается на Вашем выложенном файле PS.txt так:
Скрытый текст

с сортировкой — чуть больше двадцати секунд (без сортировки — чуть больше пятнадцати секунд).

NB! Важное замечание: на x64 ОС нужно использовать x86-версии cscript.exe/wscript.exe, т.е., прямо указывать путь к ним из каталога C:\Windows\SysWOW64 (см. скриншот под спойлером выше).
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:16, 28-01-2020 | #18