2013-12-03 5 views
0

Хотите проверить, год ли в текущем году в текстовом файле и обновлен, если не актуально, 2013. Например, текстовая строка: SET YEAR = 2012 До сих пор я был в состоянии написать фактический год в файл, но теперь мне нужно обновить информацию в файле, если она существует ... Оцените любую помощь здесь.Годовая проверка, обновление в текстовом файле с помощью VBS

dim filesys 
Set filesys = CreateObject("Scripting.FileSystemObject") 
path = filesys.GetAbsolutePathName("C:\Backups\Machine.bat") 
getname = filesys.GetFileName(path) 
If filesys.FileExists(path) Then 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set filesys = CreateObject("Scripting.FileSystemObject") 
    Set objFolder = objFSO.GetFile("C:\Backups\Machine.bat") 
    Set objFile = objFSO.OpenTextFile("C:\Backups\Machine.bat", 8) 
    objFile.WriteLine 
    objFile.Write("SET YEAR=") 
    objFile.WriteLine(Year(Date())) 
    objFile.Close 
End if 
+0

Новичок в этом деле ... тусклые filesys Set filesys = CreateObject ("Scripting.FileSystemObject") путь = filesys.GetAbsolutePathName ("C: \ Подпорки \ Machine.bat") GetName = filesys.GetFileName (путь) Если filesys.FileExists (путь), Set objFSO = CreateObject ("Scripting.FileSystemObject") Set filesys = CreateObject ("Scripting.FileSystemObject") Установить objFolder = objFSO.GetFile («C: \ Backups \ Machine.bat») Установить objFile = objFSO.OpenTextFile («C: \ Backups \ Machine.bat», 8) objFile.WriteLine objFile.Write (" SET YEAR = ") objFile.WriteLine (Год (Дата)) objFile.Close Конец, если – user3062778

ответ

0

Вы можете заменить определенную строку в текстовом файле, как это:

path = "C:\Backups\Machine.bat" 

Set fso = CreateObject("Scripting.FileSystemObject") 
If fso.FileExists(path) Then 
    Set inFile = fso.OpenTextFile(path) 
    Set outFile = fso.OpenTextFile(path & ".tmp", 2, True) 
    Do Until inFile.AtEndOfStream 
    line = inFile.ReadLine 
    If UCase(Left(Trim(line), 9)) = "SET YEAR=" Then 
     outFile.WriteLine "SET YEAR=" & Year(Date) 
    Else 
     outFile.WriteLine line 
    End If 
    Loop 
    inFile.Close 
    outFile.Close 

    fso.DeleteFile path, True 
    fso.MoveFile path & ".tmp", path 
End If 
+0

Работает как очарование! Благодарю. Что делать, если я хочу удалить дубликат «SET YEAR = 2012» из файла, но все-таки сохранить одну строку в актуальном состоянии? – user3062778

+0

@ user3062778 Вы можете пропустить строки, начинающиеся с 'SET YEAR =' (т. Е. Не писать строку вывода для этих строк ввода) и записать 'SET YEAR = 2013' в качестве последней строки (после завершения цикла). –

+0

Еще раз спасибо. Теперь у меня есть работа. – user3062778

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