Войти

Показать полную графическую версию : Нужна программа, выдергивания текста...


Страниц : 1 [2]

Amiranchik
06-12-2012, 02:08
Iska, отлично, сам не знал такого способа, взял на заметку, вдруг пригодится. :) Благодарю!

BMW09121985
06-12-2012, 14:10
BMW09121985, успехов! «Свистите», ежели что. »
НЕ долго я радовался!
Свищу!
Теперь вот такая вот проблема:
0001.txt 42167строк
0002.txt 44055строк
Получается что 0003.txt должен быть 1888строк, а в нем 1905!

Что, отсылать вам файлики ?

Iska
06-12-2012, 16:57
Получается что 0003.txt должен быть 1888строк, а в нем 1905! »
Что насчёт дубликатов строк в результирующем файле? Они есть?

Что, отсылать вам файлики ? »
А как же?! Конечно, отсылайте. Всё равно я Ваши шифровки не сумею расшифровать ;).

BMW09121985
06-12-2012, 19:20
Iska, отправил!
Мои шифровки расшифрованы в шапке :)

Iska
06-12-2012, 19:58
BMW09121985, получил, проверил. Не вижу ошибок. Выходной файл — 1905 строк. Из тех строк файла «0002.txt», которые отсутствуют в «0001.txt».

Как Вы определяли, что должно быть 1888 строк?

BMW09121985
06-12-2012, 20:02
Как Вы определяли, что должно быть 1888 строк? »
44055 строк - 42167 строк = 1888 строк

Iska
06-12-2012, 20:13
Выполните «2.cmd», в котором источник и фильтр поменяны местами:
cscript.exe //nologo SomeScript.vbs /Source:0001.txt /Filter:0002.txt 1>0004.txt
Содержимое «0004.txt» будет состоять из строк файла «0001.txt», которые отсутствуют в «0002.txt». У меня таких набралось 17 штук. Понимаете? В файле «0001.txt» есть строки, которых нет в «0002.txt». Потому 1888 в результате исполнения «1.bat» никак набраться не может:
1888+17=1905
;).

P.S. Все эти арифметические выкладки, разумеется, справедливы до тех пор, пока в файлах нет дубликатов.

BMW09121985
06-12-2012, 21:42
P.S. Все эти арифметические выкладки, разумеется, справедливы до тех пор, пока в файлах нет дубликатов. »
Дело в том, что до этой операции я файлики проганяю через Text Duplicate Killer , и еще раз проверил, нету там никаких дубликатов, а в тех 17 строках, такие данные, которых вообще не может быть, так как бы оторванные цифры ..

Iska
06-12-2012, 22:25
Дело в том, что до этой операции я файлики проганяю через Text Duplicate Killer , и еще раз проверил, нету там никаких дубликатов, »
Я это тоже проверял. Дубликатов нет.

а в тех 17 строках, такие данные, которых вообще не может быть, так как бы оторванные цифры .. »
Сочувствую Вашему горю, но ничем помочь не могу: «105» — строка №2007, «10949» — строка №2824 и т.д.

Из письма в PM:
А может быть такое, если в одном файле есть к примеру 10949 а в другом 1094911, то в итоге скрипт посчитает что это не разные, а одинаковые ?
Нет, не может. Главное — чтобы пробелов не было слева/справа, хотя и это можно будет учесть, если потребуется.

KooDI
07-12-2012, 21:57
Доброго времени суток.
Отличный способ.
Похожая ситуация, не хотел создавать отдельную тему, есть файл в котором текст в колонку.
Как можно сделать, так что б к каждому рядку в начале текста добавить то что мне надо.

Пример
Было
1234
5678
Стало
Вася_1234
Вася_5678
и так дале

Iska
08-12-2012, 00:25
for /f "delims=" %%i in (FileIn.txt) do echo Вася_%%i>>FileOut.txt

BMW09121985
10-12-2012, 13:37
Iska, Может не по теме, хотел спросить, как можно разделить текстовый файл на несколько с нужным количеством ?
К примеру есть файл с 2052 строк, а мне надо его разделить на 36 файликов по 57 строк!

Iska
10-12-2012, 18:11
Может не по теме »
Не по теме. На будущее: принято так — «Один вопрос — одна тема».

Option Explicit

Dim strSourceFile
Dim strDestFile

Dim lngLines
Dim i
Dim lngFileNumber

Dim objTSSource
Dim objTSDest

Dim strLine


strSourceFile = "C:\Песочница\008\Source.txt"
strDestFile = "C:\Песочница\008\Destination$.txt"


lngLines = 57
i = 0
lngFileNumber = 0

With WScript.CreateObject("Scripting.FileSystemObject")
Set objTSSource = .OpenTextFile(strSourceFile)
Set objTSDest = .CreateTextFile(Replace(strDestFile, "$", CStr(lngFileNumber)), True)

Do Until objTSSource.AtEndOfStream
strLine = objTSSource.ReadLine()
i = i + 1

If i > lngLines Then
objTSDest.Close

i = 1
lngFileNumber = lngFileNumber + 1

Set objTSDest = .CreateTextFile(Replace(strDestFile, "$", CStr(lngFileNumber)), True)
End If

objTSDest.WriteLine strLine
Loop

objTSDest.Close
objTSSource.Close

Set objTSDest = Nothing
Set objTSSource = Nothing
End With

WScript.Quit 0

softter
10-12-2012, 19:02
К примеру есть файл с 2052 строк, а мне надо его разделить на 36 файликов по 57 строк! »


Cut Mail list (http://soft-arhiv.com/load/2-1-0-2) - режет файлы со строковыми данными на более мелкие части. Правда делалась для разделки е-майл листов и минимальное число строк 200. Если есть желание скину исходник, перекомпилируете сами.

KooDI
18-02-2014, 11:55
Доброго времени суток
Iska, пожалуйста можете подправить этот код так чтоб можно было на кнопку в тотале повесить.
Код с поста #33 (http://forum.oszone.net/post-2042568-33.html)

Iska
18-02-2014, 12:55
KooDI, посмотрю ночью.

Iska
19-02-2014, 07:00
Посмотрел.

E:\Песочница\0363\SplitTextFile.vbs:
Option Explicit

Dim strSourceFile
Dim strDestFile

Dim strLines
Dim lngLines
Dim i
Dim lngFileNumber

Dim objTSSource
Dim objTSDest

Dim strLine


If WScript.Arguments.Count = 1 Then
With WScript.CreateObject("Scripting.FileSystemObject")
strSourceFile = .GetAbsolutePathName(WScript.Arguments.Item(0))

If .FileExists(strSourceFile) Then
strDestFile = .BuildPath(.GetParentFolderName(strSourceFile), .GetBaseName(strSourceFile) & "|." & .GetExtensionName(strSourceFile))

strLines = Trim(InputBox("Enter lines count:", "Lines count", 50))

If strLines <> "" Then
lngLines = CLng(strLines)
i = 0
lngFileNumber = 1

Set objTSSource = .OpenTextFile(strSourceFile)
Set objTSDest = .CreateTextFile(Replace(strDestFile, "|", CStr(lngFileNumber)), True)

Do Until objTSSource.AtEndOfStream
strLine = objTSSource.ReadLine()
i = i + 1

If i > lngLines Then
objTSDest.Close

i = 1
lngFileNumber = lngFileNumber + 1

Set objTSDest = .CreateTextFile(Replace(strDestFile, "|", CStr(lngFileNumber)), True)
End If

objTSDest.WriteLine strLine
Loop

objTSDest.Close
objTSSource.Close

Set objTSDest = Nothing
Set objTSSource = Nothing
End If
Else
WScript.Echo "Source file [" & strSourceFile & "] not found."
WScript.Quit 2
End If
End With
Else
WScript.Echo "Usage: wscript.exe " & WScript.ScriptName & " <Source file>"
WScript.Quit 1
End If

WScript.Quit 0

Настройки кнопки обычны:
http://img41.imageshack.us/img41/1612/16ef.png

KooDI
19-02-2014, 23:07
Ого даже так, это просто супер, спасибо огромное, один универсальный скрипт, можно задавать сколько надо строк в окошечке, не думал что так можно...)
Можете подсазать в какой строке и где подставить(если это не сложно, и не надо весь код скрипта изменять) символ _, что б было с суфиксом _1, _2, _3...?

Iska
20-02-2014, 01:03
Можете подсазать в какой строке и где подставить(если это не сложно, и не надо весь код скрипта изменять) символ _, что б было с суфиксом _1, _2, _3...? »
Здесь:
strDestFile = .BuildPath(.GetParentFolderName(strSourceFile), .GetBaseName(strSourceFile) & "_|." & .GetExtensionName(strSourceFile))




© OSzone.net 2001-2012