Что нового

Замена текста в txt по итоговой строке

Nixon98

Новичок
Сообщения
26
Репутация
0
Добрый день.

Может кто нибудь подскажет возможно ли замена даты по строкам на дату по итоговой строке ?

Пример:
12/03:2019 пород
12/03/2029 ропоодоо
12:03/2019 гарлпоогпо
=<%< 14/03/2019


Нужно заменить все даты на ту что после строк( 14/03/2019) разумеется строк и файлов много, по этому и интересна автоматизация.
Может подскажете в какую сторону думать. Заранее всем спасибо !
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Дайте пример более расширенный (несколько блоков), лучше прикрепите один из файлов.
 
Автор
N

Nixon98

Новичок
Сообщения
26
Репутация
0
ra4o сказал(а):
Дайте пример более расширенный (несколько блоков), лучше прикрепите один из файлов.
Прикрепляю файлы
 

Вложения

  • 20190124sbb435033865668_121.TXT
    155 байт · Просмотры: 8
  • 20190123sbb435033865668_120.TXT
    295 байт · Просмотры: 6

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
В одном файле все строки будут с одной датой (той, что в последней строке) ?
строка с нужной датой всегда начинается с '=' ?
Попробуйте так :
Код:
While 1
	$File = FileOpenDialog('выберите файл для обработки', @ScriptDir & "\", "Текстовый файл (*.txt)", 1 + 2)
	If Not @error Then
		$Text = FileRead($File)
		$Date = StringRegExp($Text, '(?:;)(\d{2}-\d{2}-\d{4})(?:;)', 1)
		$Text = StringRegExpReplace($Text, '(\d{2}-\d{2}-\d{4})', $Date[0])
		$hFile = FileOpen($File, 2)
		FileWrite($hFile, $Text)
		FileClose($hFile)
	Else
		ExitLoop
	EndIf
WEnd
 
Автор
N

Nixon98

Новичок
Сообщения
26
Репутация
0
ra4o сказал(а):
В одном файле все строки будут с одной датой (той, что в последней строке) ?
строка с нужной датой всегда начинается с '=' ?
Попробуйте так :
Код:
While 1
	$File = FileOpenDialog('выберите файл для обработки', @ScriptDir & "\", "Текстовый файл (*.txt)", 1 + 2)
	If Not @error Then
		$Text = FileRead($File)
		$Date = StringRegExp($Text, '(?:;)(\d{2}-\d{2}-\d{4})(?:;)', 1)
		$Text = StringRegExpReplace($Text, '(\d{2}-\d{2}-\d{4})', $Date[0])
		$hFile = FileOpen($File, 2)
		FileWrite($hFile, $Text)
		FileClose($hFile)
	Else
		ExitLoop
	EndIf
WEnd

Спасибо огромное! А есть возможность замены сразу всех файлов их по 100 шт за раз? или я что то не так делаю?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
сразу всех файлов их по 100 шт за раз?
Эти все файлы в одной папке ? Кроме необходимых для замены файлов другие txt файлы могут быть в папке?
Папки (названия, путь) могут быть разные ?
 
Автор
N

Nixon98

Новичок
Сообщения
26
Репутация
0
Добрый день.
Нет, в папке только Файлы для замены.
Папки да, всегда разные.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
При запуске скрипта выбирайте папку, в которой призводить работу над файлами:
Код:
#include <File.au3>

$Folder = FileSelectFolder('выберите каталог с файлами для обработки', '')
If Not @error Then
	$aFile = _FileListToArray($Folder, Default, 1)
	If IsArray($aFile) Then
		For $i = 1 To $aFile[0]
			$File = $Folder&'/'&$aFile[$i]
			If Not @error Then
				$Text = FileRead($File)
				$Date = StringRegExp($Text, '(?:;)(\d{2}-\d{2}-\d{4})(?:;)', 1)
				$Text = StringRegExpReplace($Text, '(\d{2}-\d{2}-\d{4})', $Date[0])
				$hFile = FileOpen($File, 2)
				FileWrite($hFile, $Text)
				FileClose($hFile)
			EndIf
		Next
	EndIf
	MsgBox(64,'Завершение работы','Обработка файлов в каталоге'&@CR&$Folder&@CR&'завершена !',5)
EndIf
 
Автор
N

Nixon98

Новичок
Сообщения
26
Репутация
0
ra4o сказал(а):
При запуске скрипта выбирайте папку, в которой призводить работу над файлами:
Код:
#include <File.au3>

$Folder = FileSelectFolder('выберите каталог с файлами для обработки', '')
If Not @error Then
	$aFile = _FileListToArray($Folder, Default, 1)
	If IsArray($aFile) Then
		For $i = 1 To $aFile[0]
			$File = $Folder&'/'&$aFile[$i]
			If Not @error Then
				$Text = FileRead($File)
				$Date = StringRegExp($Text, '(?:;)(\d{2}-\d{2}-\d{4})(?:;)', 1)
				$Text = StringRegExpReplace($Text, '(\d{2}-\d{2}-\d{4})', $Date[0])
				$hFile = FileOpen($File, 2)
				FileWrite($hFile, $Text)
				FileClose($hFile)
			EndIf
		Next
	EndIf
	MsgBox(64,'Завершение работы','Обработка файлов в каталоге'&@CR&$Folder&@CR&'завершена !',5)
EndIf
автор ещё раз спасибо за помощь, но возник вопрос по скрипту, он меняет кодировку с ANSI на UTF-8, и если есть буквы в текстовике то программа(1с)их не распознает, возможно сохранение файлов после работы скрипты в ansi??
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
А так ?
Код:
#include <File.au3>

$Folder = FileSelectFolder('выберите каталог с файлами для обработки', '')
If Not @error Then
    $aFile = _FileListToArray($Folder, Default, 1)
    If IsArray($aFile) Then
        For $i = 1 To $aFile[0]
            $File = $Folder&'/'&$aFile[$i]
            If Not @error Then
                $Text = FileRead($File)
                $Date = StringRegExp($Text, '(?:;)(\d{2}-\d{2}-\d{4})(?:;)', 1)
                $Text = StringRegExpReplace($Text, '(\d{2}-\d{2}-\d{4})', $Date[0])
                $hFile = FileOpen($File, BitOR($FO_OVERWRITE,$FO_ANSI))
                FileWrite($hFile, $Text)
                FileClose($hFile)
            EndIf
        Next
    EndIf
    MsgBox(64,'Завершение работы','Обработка файлов в каталоге'&@CR&$Folder&@CR&'завершена !',5)
EndIf
 
Автор
N

Nixon98

Новичок
Сообщения
26
Репутация
0
ra4o сказал(а):
А так ?
Код:
#include <File.au3>

$Folder = FileSelectFolder('выберите каталог с файлами для обработки', '')
If Not @error Then
    $aFile = _FileListToArray($Folder, Default, 1)
    If IsArray($aFile) Then
        For $i = 1 To $aFile[0]
            $File = $Folder&'/'&$aFile[$i]
            If Not @error Then
                $Text = FileRead($File)
                $Date = StringRegExp($Text, '(?:;)(\d{2}-\d{2}-\d{4})(?:;)', 1)
                $Text = StringRegExpReplace($Text, '(\d{2}-\d{2}-\d{4})', $Date[0])
                $hFile = FileOpen($File, BitOR($FO_OVERWRITE,$FO_ANSI))
                FileWrite($hFile, $Text)
                FileClose($hFile)
            EndIf
        Next
    EndIf
    MsgBox(64,'Завершение работы','Обработка файлов в каталоге'&@CR&$Folder&@CR&'завершена !',5)
EndIf
спасибо,работает
 
Автор
N

Nixon98

Новичок
Сообщения
26
Репутация
0
Nixon98 сказал(а):
спасибо,работает
Добрый день.
Автор можно у Вас уточнить почему то не работает скрипт на прикрепленом файле, хотя все тоже самое.
 

Вложения

  • 5905282752_40705810249770001767_100.txt
    776 байт · Просмотры: 1

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
хотя все тоже самое
Не совсем - в этом файле в конце последней строки нет ";"
Пробуйте в таком виде :
Код:
#include <File.au3>

$Folder = FileSelectFolder('выберите каталог с файлами для обработки', '')
If Not @error Then
    $aFile = _FileListToArray($Folder, Default, 1)
    If IsArray($aFile) Then
        For $i = 1 To $aFile[0]
            $File = $Folder&'/'&$aFile[$i]
            If Not @error Then
                $Text = FileRead($File)
                $Date = StringRegExp($Text, '(?:;)(\d{2}-\d{2}-\d{4})(?:;)?', 1)
				$Text = StringRegExpReplace($Text, '(\d{2}-\d{2}-\d{4})', $Date[0])
                $hFile = FileOpen($File, BitOR($FO_OVERWRITE,$FO_ANSI))
                FileWrite($hFile, $Text)
                FileClose($hFile)
            EndIf
        Next
    EndIf
    MsgBox(64,'Завершение работы','Обработка файлов в каталоге'&@CR&$Folder&@CR&'завершена !',5)
EndIf
 
Верх