Цитата alpap:
Nikugorsk,
нужны файлы с разным содержимым или если знаете неплохо содержимое, есть ли в файле строка(и) с похожим содержимым кроме этой строки: 7,2 "Центр_1664#0", т.е если искать по символу _ или # или обеим или по кавычкам - гарантированно будет найдена только одна эта строка?
|
Да, гарантированно найдётся только эта строка. По любому из 3х признаков.
Цитата Iska:
На WSH:
Скрытый текст
Код:
Option Explicit
Dim strSourceFolder
Dim objFSO
Dim objFile
Dim objRegExp
Dim strContent
If WScript.Arguments.Count = 1 Then
strSourceFolder = WScript.Arguments.Item(0)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strSourceFolder) Then
Set objRegExp = WScript.CreateObject("VBScript.RegExp")
With objRegExp
.Pattern = "^(.+ "")(?:.+_)(\d+)(?:#)(.+"")$"
.Global = True
.MultiLine = True
End With
For Each objFile In objFSO.GetFolder(strSourceFolder).Files
If StrComp(objFSO.GetExtensionName(objFile.Name), "txt", 0) = 0 Then
With objFSO.OpenTextFile(objFile.Path)
strContent = .ReadAll()
.Close
End With
If objRegExp.Test(strContent) Then
objFSO.CopyFile objFile.Name, objFSO.GetBaseName(objFile.Name) & ".bak", True
With objFSO.CreateTextFile(objFile.Name, True)
.Write objRegExp.Replace(strContent, "$1$2$3")
.Close
End With
Else
' Nothing to do
End If
Else
' Nothing to do
End If
Next
Set objRegExp = Nothing
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 2
End If
Set objFSO = Nothing
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>"
WScript.Quit 1
End If
WScript.Quit 0
Исходная папка указывается аргументом скрипта (также можно просто перетащить папку на скрипт в Проводнике). Будут обработаны все *.txt файлы из указанной папки. При нахождении шаблона в содержимом текстового файла и последующей замене делается резервная копия исходного файла с расширением .bak.
Согласно изложенным Вами выше правилам поиска и замены в выложенных для примера файлах произойдут следующие замены — в 1657.txt:
Код:
11,2 "Центр_1657#0"
на:
Код:
11,2 "16570"
и в 1664.txt:
Код:
7,2 "Центр_1664#0"
на:
Код:
7,2 "16640"
|
А как 0 в конце убрать? Должен остаться только 1657 и 1664
Цитата Iska:
И ещё, к словам коллеги: случайно ли то, что искомые цифры в файле совпадают с именем файла?
|
Это частный случай. Для примера