Что нового

Замена текста одновременно в нескольких файлах, в разных каталогах.

Сообщения
83
Репутация
-1
Здравствуйте.
Помогите решить вопрос.
У меня в разных каталогах - есть текстовые файлы (но они не имеют расширения txt. Это просто файлы без расширения)
В каждом таком файле есть два текста: "44.22s=123" и "44.55k=188"

Нужно заменить два текста - в каждом файле (44.22s=123 на 44.11b=108) и (44.55k=188 на 44.00w=175).

Каталоги с текстовыми фалами без расширений - находятся по адресам:
C:\SCL страницы\5-1\
C:\резервная копия\5\
C:\сохранения\сохранение 5\
 

argumentum

Новичок
Сообщения
4
Репутация
1
Код:
#include <File.au3>

Exit TryThis()
Func TryThis()
    Local $sPaths = ""
    $sPaths &= "C:\SCL pages\5-1" & @CRLF
    $sPaths &= "C:\backup\5" & @CRLF
    $sPaths &= "C:\saves\save 5" & @CRLF

    Local $n, $aPaths = StringSplit($sPaths, @CRLF, 1)
    For $iPaths = 1 To $aPaths[0]
        If Not FileExists($aPaths[$iPaths]) Then ContinueLoop
        $aFiles = _FileListToArray($aPaths[$iPaths], "*", $FLTA_FILES)
        If UBound($aFiles) < 2 Then ContinueLoop
        For $iFiles = 1 To $aFiles[0]
            If StringInStr($aFiles[$iFiles], ".") Then ContinueLoop
            $sData = FileRead($aPaths[$iPaths] & "\" & $aFiles[$iFiles])
            If StringInStr($sData, "44.22s=123") Or StringInStr($sData, "44.55k=188") Then
                
                ;-)
                
            EndIf
        Next
    Next
EndFunc
 [AUTOIT]
 
Автор
D
Сообщения
83
Репутация
-1
Код:
#include <File.au3>

Exit TryThis()
Func TryThis()
    Local $sPaths = ""
    $sPaths &= "C:\SCL pages\5-1" & @CRLF
    $sPaths &= "C:\backup\5" & @CRLF
    $sPaths &= "C:\saves\save 5" & @CRLF

    Local $n, $aPaths = StringSplit($sPaths, @CRLF, 1)
    For $iPaths = 1 To $aPaths[0]
        If Not FileExists($aPaths[$iPaths]) Then ContinueLoop
        $aFiles = _FileListToArray($aPaths[$iPaths], "*", $FLTA_FILES)
        If UBound($aFiles) < 2 Then ContinueLoop
        For $iFiles = 1 To $aFiles[0]
            If StringInStr($aFiles[$iFiles], ".") Then ContinueLoop
            $sData = FileRead($aPaths[$iPaths] & "\" & $aFiles[$iFiles])
            If StringInStr($sData, "44.22s=123") Or StringInStr($sData, "44.55k=188") Then
              
                ;-)
              
            EndIf
        Next
    Next
EndFunc
 [AUTOIT]
Спасибо.
У вас тут меняется 44.22s=123 и 44.55k=188
Но на что именно меняется - в коде не написано.
А их нужно заменить на 44.11b=108 и 44.00w=175
 

Norm

Продвинутый
Сообщения
297
Репутация
81
Код:
#include <File.au3>

Local $sData, $nF, $aFiles, $aPaths[3] = ["C:\Folder_1\1", "C:\Folder_2\2", "C:\Folder_3\3"]
For $sPath In $aPaths
    If FileExists($sPath) Then
        $aFiles = _FileListToArray($sPath, "*", 1, True)
        If Not @error Then
            For $nN = 1 To $aFiles[0]
                $sData = StringReplace(FileRead($aFiles[$nN]), "44.22s=123", "44.11b=108")
                $sData = StringReplace($sData, "44.55k=188", "44.00w=175")
                $nF = FileOpen($aFiles[$nN], (FileGetEncoding($aFiles[$nN], 2) + 2))
                FileWrite($nF, $sData)
                FileClose($nF)
            Next
        EndIf
    EndIf
Next
 
Верх