Что нового

[Данные, строки] Сравнение строки из тхт и выполнение действия при совпадении с образцом

Yriy_07

Новичок
Сообщения
37
Репутация
0
Что я пытаюсь выполнить?
Есть файл тхт в который записываются строки (имена компьютеров) файл - list update.txt. файл заполняется в свободном порядке другой программой (имя компютера №1 может появится как в 1 строке так и в 10). При выполнении кода нужно чтобы сравнивался образец строки с искомой удалял эту строку и удалял пустую строку из тхт. Все это работает но мне нужно выполнить определенные действия до удаления этой строки (выполнить копирование файла)

Как я это пытался/ась выполнить?
Ответ - опишите какие действия были предприняты
Код:
$File = $agf_put & '\list update.txt'
$updatefile= $agf_put & '\update.exe'
$sPatch= $agf_put & '\list update.txt'
$iCount=_FileCountLines($sPatch)
Local $sText
For $i=1 To $iCount
    $sLine = FileReadLine($sPatch,$i)
    $sText &= $sLine
Next

if $sLine = $sFile Then

FileCopy($updatefile, @ScriptDir & '\', 1)
$Read = FileRead($File)
$Replace = StringReplace($Read, $sFile, '')
FileDelete($File)
FileWrite($File, $Replace)


Else
 

EndIf

Что я ожидаю от выполненных действии?
Ответ


Нужно чтобы было так:

Код:
$tetr = @ComputerName
$File = $agf_put & '\list update.txt'
$Read = FileRead($File)
$Replace = StringReplace($Read, $sFile, '')

if $Replace = $tetr Then

FileDelete($File)
FileWrite($File, $Replace)

Else

Endif

_FileDeleteEmptyLines($agf_put & "\list update.txt")

Func _FileDeleteEmptyLines($ttFile)
    Local $sFileContent = StringRegExpReplace(FileRead($ttFile), "(\r?\n){1,}", "\1")
    Local $hFOpen = FileOpen($ttFile, 2 + FileGetEncoding($ttFile))
    FileWrite($hFOpen, StringStripWS($sFileContent, 3))
    FileClose($hFOpen)
 EndFunc


Что происходит на самом деле?
Ответ - опишите подробнее что происходит
Вот это - if $Replace = $tetr Then конечно же не работает. мне просто нужно чтобы находил строку $tetr в списке и если она есть выполнил действия по условию
Он находит строку с именем компютера в файле list update.txt, успешно очищает строку и удаляет но при сравнении с искомой строкой не выполняет действий.
Очень прошу помочь! все похожие темы просмотрел но никак не решу
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Не понял что вы пытаетесь сделать этим кодом:
Код:
$tetr = @ComputerName ;получаем имя ПК
$File = $agf_put & '\list update.txt' ;указываем путь к файлу
$Read = FileRead($File) ;читаем файл
$Replace = StringReplace($Read, $sFile, '') ;ищем в прочитанном файле содержимое несуществующей переменной $sFile и затираем его

if $Replace = $tetr Then ;сравниваем замененное содержимое с именем ПК, которые будут равны только если в файле всего одна запись и она совпадает с именем ПК

FileDelete($File)
FileWrite($File, $Replace)

Else

Endif


Исходя из описания задачи, наверно так:
Код:
$tetr = @ComputerName ;получаем имя ПК
$File = $agf_put & '\list update.txt' ;указываем путь к файлу
$Read = FileRead($File) ;читаем файл 

if StringInStr($Read, $tetr) Then ;если имя ПК содержится в файле, то
	MsgBox(0, "", $tetr) ;выполняем какие-то действия до того как стерли запись
	$Replace = StringReplace($Read, $tetr, '') ;затираем имя ПК
	FileDelete($File) ;удаляем файл
	FileWrite($File, $Replace) ;перезаписываем файл уже без имени ПК
Else

Endif
 
Автор
Y

Yriy_07

Новичок
Сообщения
37
Репутация
0
Большое спасибо! именно это мне нужно и было!))))Супер! :IL_AutoIt_1:
 
Верх