2016-02-09 4 views
1

У меня есть следующий файл CSV, который мне нужно проанализировать с помощью VBScript. Цель сценария - слишком даты матча.Parse CSV текстовый файл

"LIRRR 1M",.412900,02/08/2016 
"LIRRR 3M",.222700,02/08/2016 
"LIRRR 6M",.333200,02/08/2016 
"LIRRR12M",1.1333300,02/08/2016 
"FEDFRRRR",.333000,02/08/2016 
"CCC 1YR",.550330,02/08/2016 
"2YRCMT",.743300,02/08/2016 
"5YRCMT",1.2503300,02/08/2016 
"10YRCMT",1.860000,02/08/2016

Вот код, который я написал:

On Error Resume Next 
Const ForReading = 1 

Dim strSearchFor 
Dim MyDate, MyWeekDay 

MyDate = Date ' Assign a date. 
MyWeekDay = Weekday(MyDate) 

If MyWeekDay = 2 Then 
    strSearchFor = Right("0" & DatePart("m", Date), 2) & "/" & _ 
        Right("0" & DatePart("d", Date-3), 2) & "/" & _ 
        DatePart("yyyy", Date) 
Else 
    strSearchFor = Right("0" & DatePart("m", Date), 2) & "/" & _ 
        Right("0" & DatePart("d", Date-1), 2) & "/" & _ 
        DatePart("yyyy", Date) 
End If 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile("C:\Users\rand.mahmwd\Desktop\index.txt", ForReading) 

Do Until objTextFile.AtEndOfStream 
    strLine = objTextFile.ReadLine() 

    If InStr(strLine, strSearchFor) = 0 Then 
     Set objFile = objFSO.CreateTextFile("C:\Users\rand.mahmwd\Desktop\error.txt") 
     objFile.Write "date is not match" & vbCrLf 
     Exit Do 
    End If 
Loop 
objTextFile.Close 

если матч даты или не всегда создают error.txt

+0

И ваша проблема? –

+0

, если совпадение даты или не всегда создает файл ошибки.txt. – Rand

+0

great> :(ты полностью изменил свой вопрос после того, как я дал ответ. Пустая трата времени. Я удалил свой ответ и не потрудился снова. И проголосовать не по-моему. –

ответ

0

Ваш код работает для меня при следующих условиях:

  • Входной файл должен быть закодирован ANSI.
  • Все даты в файле должны быть указаны в предыдущий рабочий день.
  • Файл не должен содержать никаких других строк, включая пустые строки.
  • Сценарий запускается только в рабочие дни.
  • Предыдущий рабочий день не в предыдущем месяце.

Последнее предварительное условие связано с ошибкой в ​​вашем скрипте. Вы рассчитываете месяц и год с текущей даты (DatePart("m", Date), DatePart("yyyy", Date)), но день с даты предыдущего рабочего дня (DatePart("d", Date-3), DatePart("d", Date-1)). Это можно исправить, используя ту же дату для всех вычислений:

If WeekDay(Date) = 2 Then 
    MyDate = Date - 3 
Else 
    MyDate = Date - 1 
End If 

strSearchFor = Right("0" & DatePart("m", MyDate), 2) & "/" & _ 
       Right("0" & DatePart("d", MyDate), 2) & "/" & _ 
       DatePart("yyyy", MyDate) 
Смежные вопросы