Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Кнопка, перетаскивание файла на панель, относительный путь 
Author Message
Batya



PostPosted: Mon Apr 19, 2010 10:17    Post subject: Reply with quote

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
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group