Я работал над сценарием VBScript, который находит все файлы с определенным расширением .dat, выполняет поиск по определенному шаблону «Срок выполнения: \ d {8}» и смещает строку в определенном формате.
У меня две проблемы с кодом ниже:
- Это не чтение первой строки.Каждый раз, когда я запускаю сценарий, он, кажется, сразу переходит на вторую строку.
- Он использует только первый найденный шаблон и заменяет следующие шаблоны на первый шаблон в только что отформатированном виде.
Надеюсь, это имеет смысл, это очень специфический сценарий, но я надеюсь, что некоторая помощь поможет понять проблему здесь.
Ниже приведен мой код:
Set fso = CreateObject("Scripting.FileSystemObject")
'newtext = vbLf & "Date Due:" & sub_month & sub_day & sub_year 'the text replacing Date Due:
'the purpose of this script is to format the date after Date Due:, which is currently formatted as YYYYMMDD, to MM/DD/YYYY
'example: Date Date:20180605 should be Date Due:06/05/2018
Set re = New RegExp
re.Pattern = "(\nDate Due:\d{8})" 'Looking for line, Date Due: followed by 8 digits
Dim sub_str 'substring of date due, returns the 8 digits aka the date 12345678
Dim sub_month
Dim sub_day
Dim sub_year
Dim concat_full
re.Global = False
re.IgnoreCase = True
For Each f In fso.GetFolder("C:\Users\tgl\Desktop\TestFolder\").Files
If LCase(fso.GetExtensionName(f.Name)) = "dat" Then
text = f.OpenAsTextStream.ReadAll
sub_str = Mid(text, 10, 8) 'substring of the full line, outputs the 8 digit date
sub_month = Mid(sub_str, 5, 2) 'substring of the date, outputs the 2 digit month
sub_day = Mid(sub_str, 7, 2) 'substring of the date, outputs the 2 digit day
sub_year = Mid(sub_str, 1, 4) 'substring of the date, outputs the four digit year
newtext = vbLf & "Date Due:" & sub_month & "/" & sub_day & "/" & sub_year 'replaces the text pattern defined above and concatenates the substrings with slashes
'concat_full = (sub_month & sub_day & sub_year)
f.OpenAsTextStream(2).Write re.Replace(text, newtext)
End If
Next
РЕДАКТИРОВАТЬ: При изменении re.Global
на True
он заменяет каждую строку одним найденным шаблоном.Он должен использовать каждый найденный шаблон как свой собственный, а не первый, который он находит.