Что нового

[Данные, строки] Поиск, изменение и удаление строк в файлах

hilongpao

Новичок
Сообщения
2
Репутация
0
Версия AutoIt: 3.3.4.12

Описание:
Добрый день.

Помогите, пожалуйста, с обработкой файлов.

В папке с произвольным именем есть несколько произвольно названных файлов с разными расширениями, содержащих текст вида прикреплённого к теме файла.

Надо:
1) Изменить строку G90G80G21G49 на G90G80G21 (т.е. убрать из неё G49);
2) Удалить ТОЛЬКО ПЕРВУЮ встреченную строку M6 T9 (может быть М6 Т20, М6 Т100) с начала файла;
3) Удалить все встречающиеся в файле строки, начинающиеся с G49;
4) Удалить все встречающиеся в файле строки вида G43 H9 G0Z7.0000 (могут быть вариации, типа G43 H200 G0Z100.0000 или G43 H20 G0Z10.0000);
5) Сохранить файл, добавив к его имени _ (т.е. файл был TestFile.txt, а станет _TestFile.txt)

Примечания:
Строка G90G80G21G49 есть всегда, обычно в одном экземпляре и находится она в начале файла.
В архиве - образец файла.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
hilongpao
Код:
#include <File.au3>

Local $sPath = FileSelectFolder("", "")
If @error Then Exit

Local $aList = _FileListToArray($sPath, "*", $FLTA_FILES), $iCheck, $aList, $sData, $hFile
If @error Then Exit MsgBox(16, "Error", "_FileListToArray" & @CRLF & "Error:" & @error)

For $i = 1 To $aList[0]
	If StringLeft($aList[$i], 1) = "_" Then ContinueLoop

	$iCheck = 0
	$sData = FileRead($sPath & "\" & $aList[$i])

	$sData = StringReplace($sData, "G90G80G21G49", "G90G80G21")
	$iCheck += @extended
	$sData = StringRegExpReplace($sData, ".*M6 T[0-9]+.*\R", "", 1)
	$iCheck += @extended
	$sData = StringRegExpReplace($sData, "G49.*\R", "")
	$iCheck += @extended
	$sData = StringRegExpReplace($sData, ".*G43 H[0-9]+ G0Z[0-9]+\.[0-9]+.*\R", "")
	$iCheck += @extended

	$hFile = FileOpen($sPath & "\_" & $aList[$i], 2)
	If $iCheck Then FileWrite($hFile, $sData)
	FileClose($hFile)
Next
 
Автор
H

hilongpao

Новичок
Сообщения
2
Репутация
0
Работает.

Большое спасибо за помощь и затраченное время.
 
Верх