Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Цитата aggressor_:
Этот скрипт ограничен только 3 заменами, а можно добавить strRepl(3) = "_something4_" для четвёртой замены или этого мало и нужно будет ещё корректировать скрипт? »
Да, нужно.
читать дальше »
Код: Выделить весь код
Option Explicit
 
Dim objFSO 
Dim objShApp
Dim objWshSh
Dim strMask
Dim CurrFolderPath
Dim strFileP
Dim OpenFile
Dim nLine
Dim strLine()
Dim strRepl()
Dim nReplaceItems
 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") 
Set objShApp = WScript.CreateObject("Shell.Application")
Set objWshSh = CreateObject("WScript.Shell")

' количество заменяемых пунктов (минус 1 пункт)
nReplaceItems = 3

ReDim strLine(nReplaceItems)
ReDim strRepl(nReplaceItems)

' поместите файл скрипта в каталог, который нужно обработать
CurrFolderPath = objWshSh.CurrentDirectory
' маска обрабатываемых файлов
strMask = "*.txt; *.htm"
' файл-образец для замены
strFileP = "z:\list.txt"
' заменяемые выражения
strRepl(0) = "_something1_"
strRepl(1) = "_something2_"
strRepl(2) = "_something3_"
strRepl(3) = "_something4_"

Set OpenFile = objFSO.OpenTextFile(strFileP, 1)
  Do Until OpenFile.AtEndOfStream = True Or nLine = nReplaceItems
      nLine = OpenFile.Line - 1
      strLine(nLine) = OpenFile.ReadLine
  Loop
OpenFile.Close

If nLine < nReplaceItems Then
  MsgBox "Некорректный файл-образец"
Else
  GetFiles objFSO.GetFolder(CurrFolderPath)
End If

Set objFSO = Nothing
Set objShApp = Nothing
Set objWshSh = Nothing

MsgBox "Скрипт завершил обработку каталога"


WScript.Quit 
 
Sub GetFiles(objFolder) 
  Dim SubFolderItem
    ReplaceTextToFiles(objFolder.Path)
    For Each SubFolderItem In objFolder.SubFolders
      GetFiles SubFolderItem 
    Next 
End Sub 
 
Sub ReplaceTextToFiles(strPath) 
  Dim arrFiles
  Dim i, n
  Dim strItemFile
  Dim strText   
    Set arrFiles = objShApp.NameSpace(strPath).Items 
    arrFiles.Filter 192, strMask
    For i = 0 To arrFiles.Count - 1
      strItemFile = arrFiles.Item(i).Path
      MsgBox strItemFile
      Set OpenFile = objFSO.OpenTextFile(strItemFile, 1)
        strText = OpenFile.ReadAll
      OpenFile.Close
      For n = 0 To nReplaceItems
        strText = Replace(strText, strRepl(n), strLine(n), 1, -1, 1)
      Next
      Set OpenFile = objFSO.OpenTextFile(strItemFile, 2)
        OpenFile.Write strText
      OpenFile.Close
    Next
End Sub
В выделенное красным вставляйте нужное количество строк для замены (минус 1). И, соответственно, добавляйте (или убирайте) заменяемые строчки
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:14, 26-06-2012 | #8