Batya

|
Posted: Mon Apr 19, 2010 10:17 Post subject: |
|
|
GGS wrote: | Возможно ли в подобной ситуации всё-таки продолжить работу с остальными файлами? |
Code: | '=============================================
' Замена текста в файлах из файла-списка
'
' Параметры:
' {текст для поиска} {текст для замены} {файл-список}
'=============================================
Option Explicit
Dim FSO, WSH, FF, F, List, Str1, Str2, Errors
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Set Errors = CreateObject("Scripting.Dictionary")
With WScript
FF = .Arguments(2)
Str1 = .Arguments(0)
Str2 = .Arguments(1)
End With
List = Split(FSO.OpenTextFile(FF).ReadAll, vbNewLine)
On Error Resume Next
For Each F In List
Main F, Str1, Str2
If Err.Number > 0 Then
Errors.Add F, Err.Description
Err.Clear
End If
Next
On Error GoTo 0
If Errors.Count > 0 Then MsgBox JoinErr(Errors), 0, "Замена текста в файлах из файла-списка"
Set Errors = Nothing
Set WSH = Nothing
Set FSO = Nothing
WScript.Quit 0
Sub Main(pPath, pStr1, pStr2)
Dim lText, lPath
If pPath <> "" Then
lPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
If FSO.FileExists(lPath) Then
If FSO.GetFile(lPath).Size > 0 Then
lText = FSO.OpenTextFile(lPath, 1).ReadAll
If InStr(1, lText, pStr1, 1) > 0 Then
lText = Replace(lText, pStr1, pStr2, 1, -1, 1)
FSO.OpenTextFile(lPath, 2).Write lText
End If
End If
End If
End If
End Sub
Function JoinErr(pDic)
Dim lKey
For Each lKey In pDic
JoinErr = JoinErr & vbNewLine & _
"Файл """ & lKey & """ - " & pDic(lKey)
Next
JoinErr = "Для следующих файлов операция завершена с ошибками:" & vbNewLine & JoinErr
End Function |
Если были ошибки, выдается их список.
Read-only надо пропустить (как сейчас) или сделать, чтобы перезаписывались? _________________ Нет, я не сплю. Я просто медленно моргаю.
Last edited by Batya on Mon Apr 19, 2010 17:42; edited 2 times in total |
|