2014-01-06 3 views
0

На данный момент у меня есть большой текстовый файл, который командный файл не может обрабатывать для поиска строк. Код ниже может искать значение «9200 .... 9300», если количество строк в этом текстовом файле не длинное. Даже проблема в том, что этот код возвращает значение в той же строке с 9200. Я хочу только обрезать значение диапазона 9200 до 9300VBscript для поиска файла

Но всякий раз, когда я использовал его для большого текстового файла (500 МБ), это придает странный характер. Я думаю, мне нужно, чтобы VBScript нашел только этот номер, и я покажу это в сообщении.

Код

for /f "usebackq delims=* tokens=5" %i in (`findstr "9201.. 9200.." data.mud`) do @echo %I 

Спасибо.

+0

Не могли бы вы привести пример ввода и желаемый результат? Кроме того, какой у вас «странный характер»? Является ли входной файл, возможно, кодировкой Unicode или двоичным? –

+0

Спасибо Ансгару за ваш ответ. Это латинский символ Unicode. Если вы видите, что Data.mud не является текстовым файлом, но его можно открыть в Блокноте. Попытка написать скрипт, который будет искать диапазон от 9200 до 9200. И если for/f «usebackq delims = * tokens = 5"% i in ('findstr" 9201 .. 9200 .. "data.mud') do @echo – great77

+1

Теперь я еще более смущен. Является ли файл Unicode (текстовым) файлом? Или это не текстовый файл (т. Е. Двоичный файл)? И что вы подразумеваете под «диапазоном от 9201 до 9200»? Вы хотите, чтобы сценарий выводил все между двумя строками «9201» и «9200»? Если да, то 9201 всегда приходит до 9200? –

ответ

1

попробовать что-то вроде этого:

Set fso = CreateObject("Scripting.FileSystemObject") 

Set re = New RegExp 
re.Pattern = "\d+" 
re.Global = True 

filename = "C:\path\to\data.mud" 
lb = 9200 
ub = 920150 

Set f = fso.OpenTextFile(filename) 
Do Until f.AtEndOfStream 
    For Each m In re.Execute(f.ReadLine) 
    n = CLng(m.Value) 
    If n >= lb And n <= ub Then WScript.StdOut.WriteLine n 
    Next 
Loop 
f.Close 

Вы должны запустить этот скрипт с cscript.exe:

cscript //NoLogo C:\path\to\your.vbs 
+0

Он дает ошибку. Ручка действительна. Строка 12 Char 33 code: 80070006 source (null). которая является этой строкой: Если n> = lb И n <= ub Затем WScript.StdOut.WriteLine n – great77

+2

@ moshaye3 - используйте cscript.exe вместо wscript.exe. –

+0

Большое спасибо Эккехард. Он работает с использованием cscript. – great77

Смежные вопросы