Войти

Показать полную графическую версию : [решено] Вставить строчку из одного txt в оределённое место другого txt


ZeroCrash
04-07-2009, 22:53
Вот часть кода:
$Handle = FileFindFirstFile ( "*.txt" )
$FilePath = FileFindNextFile ($Handle)
$First = FileReadLine ($FilePath, 4)
Переменная $First запоминает 4 строку текстового файла. Нужно чтобы скрипт эту строку вставил в текстовый файл "C:\Documents and Settings\Администратор\1.txt" на четвёртую строчку после первых 8 символов в этой строке. Пример:
....
ник: qrqwrqrq
пароль: "сюда нужно вставить $First"
....

Yashied
04-07-2009, 23:05
_FileWriteToLine()

proxy
04-07-2009, 23:15
пример:

Local $hSerch = FileFindFirstFile(@ScriptDir & "\*.txt" )
Local $sFile1Path = FileFindNextFile($hSerch)
Local $sFile1Text = FileReadLine($sFile1Path, 4)
FileClose($hSerch)

Local $sFile2Path = @ScriptDir & '\test.txt'
Local $sFile2Text = FileRead($sFile2Path)

Local $sResult = StringRegExpReplace($sFile2Text, '(.*\n.*\n.*\n.{4,4})(.*)', '\1 "' & $sFile1Text & '" \2')

MsgBox(0, '', $sResult)

Local $hFile = FileOpen($sFile2Path, 2)
FileWrite($hFile, $sResult)
FileClose($hFile)

amel27
05-07-2009, 03:32
пример »
- не понял первых 4-х строк скрипта: найти второй TXT-файл?... :o
- твой RegExp меняет в каждой 4-й строке ;) ...скорее так: $sResult = StringRegExpReplace($sFile2Text,'^((.*\n){3}.{8}).*','\1 "'& $sFile1Text &'"')


на четвёртую строчку после первых 8 символов в этой строке »
может лучше искать не по номеру строки, а по содержимому?.. типа найти в одном файле строку, начинающуюся со слова "пароль: " и заменить на текст 4-й строки из другого файла?

ZeroCrash
06-07-2009, 17:56
может лучше искать не по номеру строки, а по содержимому?.. типа найти в одном файле строку, начинающуюся со слова "пароль: " и заменить на текст 4-й строки из другого файла? »
нужно чтобы в начале строчки обязательно оставалось слово "пароль: " в тексте 4-й строки другого файла этого слова нет и не будет.

amel27
07-07-2009, 14:15
ZeroCrash, я лишь о том, что не стОит себя искусственно ограничивать, если в 1-м файле строка с паролем может оказаться не на 4-й строке:
$sFile1 = "C:\TEST\file1.txt"
$sFile2 = "C:\TEST\file2.txt"

$sPass = FileReadLine($sFile2, 4)
$sText = StringRegExpReplace(FileRead($sFile1), '(?m)^([Пп][Аа][Рр][Оо][Лл][Ьь]:).*', 'Пароль: "' & $sPass &'"')

ZeroCrash
08-07-2009, 20:10
amel27, понятно. Спасибо, это удобно, хотя и не требуется в моём случае :)

tweakos
13-07-2009, 07:35
ZeroCrash,
такой вариант:

$Handle = FileFindFirstFile ( "*.txt" )
$FilePath = FileFindNextFile ($Handle)
$First = FileReadLine ($FilePath, 4)
$1="пароль:"
$2=('пароль:'&$first)
_ReplaceStringInFile ("путь_до_файла_в_который_надо_записать_$first",$1,$first)




© OSzone.net 2001-2012