Что нового

Как один текстовый файл дописать в другой.

papa

Новичок
Сообщения
19
Репутация
0
В скрипте организован цикл for...next, который запускает декодер. На выходе получается файл.тхт, содержимое этого файла нужно копировать в другой дописывая его в конец файла. Как это сделать? FileCopy не дописывает.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
наверное так
Код:
$read = FileRead('read.txt')
$write = FileOpen('write.txt',1)
FileWrite($write,$read & @CRLF)
FileClose($write)
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Код:
FileWrite('write.txt',FileRead('read.txt'))
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
Run(@ComSpec & " /c " & 'copy 1.txt+2.txt /B 1.txt', "", @SW_HIDE)
 
Автор
P

papa

Новичок
Сообщения
19
Репутация
0
C2H5OH твоё решение у меня не работает.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Как может не работать DOSовская команда?????? :shok:
Покажи файлы!
 
Автор
P

papa

Новичок
Сообщения
19
Репутация
0
Код:
[spoiler]Opt("MouseCoordMode", 2)
Run (@ComSpec & ' /c Dir *.dll /B > dll.txt', '', @SW_HIDE)
Sleep(100)
$dll = FileReadLine('dll.txt', 1)
FileDelete('dll.txt')
Run ("shd_untmcdo2005.exe")
WinWaitActive ("one tool to rule them all. again.")
Send ($dll)
Send ("{TAB 2}")
Send ("tmp.txt")
Send ("{TAB 2}")
For $i = 1 to 1000
   MouseClick("primary", 57, 60)
   WinWaitActive ("everything is gonna be alright (c)")
   Sleep(100)
   MouseClick("primary", 171, 71)
   WinWaitActive ("everything is gonna be alright (c)")
   Sleep(100)
   MouseClick("primary", 166, 79)
   $read = FileRead('tmp.txt')
   $write = FileOpen('Ответы.txt',1)
   FileWrite($write,$read & @CRLF)
   FileClose($write)
   FileDelete("tmp.txt")
Next
   Send ("{TAB}")
   MouseClick("primary", 325, 61)
   MsgBox(0,"", "Файл декодирован")[/spoiler]
 
Автор
P

papa

Новичок
Сообщения
19
Репутация
0
Если вместо того, что предложили Александр и Kaster, вставить твой код, то ничего не копирует.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Копирует, но не добавляет @CRLF
Посмотри внимательнее.

Можно создать файл с одним символом 0x0A
И копировать
Код:
Run(@ComSpec & " /c " & 'copy ответы.txt+crlf.txt+tmp.txt /B ответы.txt", @SW_HIDE)
 
Автор
P

papa

Новичок
Сообщения
19
Репутация
0
Может я что-то не так делаю, но в таком виде не работает.
Код:
[spoiler]Opt("MouseCoordMode", 2)
Run (@ComSpec & ' /c Dir *.dll /B > dll.txt', '', @SW_HIDE)
Sleep(100)
$dll = FileReadLine('dll.txt', 1)
FileDelete('dll.txt')
Run ("shd_untmcdo2005.exe")
WinWaitActive ("one tool to rule them all. again.")
Send ($dll)
Send ("{TAB 2}")
Send ("tmp.txt")
Send ("{TAB 2}")
For $i = 1 to 2
   MouseClick("primary", 57, 60)
   WinWaitActive ("everything is gonna be alright (c)")
   Sleep(100)
   MouseClick("primary", 171, 71)
   WinWaitActive ("everything is gonna be alright (c)")
   Sleep(100)
   MouseClick("primary", 166, 79)
   Run(@ComSpec & " /c " & 'copy Ответы.txt+tmp.txt /B Ответы.txt', "", @SW_HIDE)
   FileDelete("tmp.txt")
Next
   Send ("{TAB}")
   MouseClick("primary", 325, 61)
   MsgBox(0,"", "Файл декодирован")[/spoiler]
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Всё правильно.
Два момента:
- добавь файл с символом новой строки;
- если до запуска этой команды файл 'Ответы.txt' не существует, то тогда не сработает - copy его не найдёт просто.
 
Автор
P

papa

Новичок
Сообщения
19
Репутация
0
- добавь файл с символом новой строки; - это что? :-[
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
отдельный скрипт запусти один раз
Код:
$file = FileOpen("crlf.txt",1)
FileWriteLine($file,"")
 
Автор
P

papa

Новичок
Сообщения
19
Репутация
0
Так тоже не работает. :-[
Код:
[spoiler]Opt("MouseCoordMode", 2)
Run (@ComSpec & ' /c Dir *.dll /B > dll.txt', '', @SW_HIDE)
Sleep(100)
$dll = FileReadLine('dll.txt', 1)
FileDelete('dll.txt')
Run ("shd_untmcdo2005.exe")
WinWaitActive ("one tool to rule them all. again.")
Send ($dll)
Send ("{TAB 2}")
Send ("tmp.txt")
Send ("{TAB 2}")
For $i = 1 to 2
   MouseClick("primary", 57, 60)
   WinWaitActive ("everything is gonna be alright (c)")
   Sleep(100)
   MouseClick("primary", 171, 71)
   WinWaitActive ("everything is gonna be alright (c)")
   Sleep(100)
   MouseClick("primary", 166, 79)
   Swrite = FileOpen("Ответы.txt", 1)
   FileWriteLine($write,"")
   Run(@ComSpec & " /c " & 'copy Ответы.txt+tmp.txt /B Ответы.txt', "", @SW_HIDE)
   FileDelete("tmp.txt")
   FileClose($write)
Next
   Send ("{TAB}")
   MouseClick("primary", 325, 61)
   MsgBox(0,"", "Файл декодирован")[/spoiler]
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Нет, ты не включай это в свою программу, просто запусти один раз ОТДЕЛЬНО скрипт из этих двух строчек
Код:
$file = FileOpen("crlf.txt",1)
FileWriteLine($file,"")

После этого у тебя в текущем каталоге появится файл crlf.txt, в котором будет всего два символа: 0x0D и 0x0A.

Затем в своей программе напиши так
Код:
MouseClick("primary", 166, 79)
   Run(@ComSpec & " /c " & 'copy Ответы.txt+crlf.txt+tmp.txt /B Ответы.txt', "", @SW_HIDE)
Next


Важно!!!
Файл Ответы.txt уже должен существовать до запуска этой команды.
 
Автор
P

papa

Новичок
Сообщения
19
Репутация
0
Код:
[spoiler]Opt("MouseCoordMode", 2)
Run (@ComSpec & ' /c Dir *.dll /B > dll.txt', '', @SW_HIDE)
Sleep(100)
$dll = FileReadLine('dll.txt', 1)
FileDelete('dll.txt')
Run ("shd_untmcdo2005.exe")
WinWaitActive ("one tool to rule them all. again.")
Send ($dll)
Send ("{TAB 2}")
Send ("tmp.txt")
Send ("{TAB 2}")
For $i = 1 to 2
   MouseClick("primary", 57, 60)
   WinWaitActive ("everything is gonna be alright (c)")
   Sleep(100)
   MouseClick("primary", 171, 71)
   WinWaitActive ("everything is gonna be alright (c)")
   Sleep(100)
   MouseClick("primary", 166, 79)
   FileOpen("Ответы.txt", 1)
   MouseClick("primary", 166, 79)
   Run(@ComSpec & " /c " & 'copy Ответы.txt+crlf.txt+tmp.txt /B Ответы.txt', "", @SW_HIDE)
   FileDelete("tmp.txt")
   FileClose("Ответы.txt")
Next
   Send ("{TAB}")
   MouseClick("primary", 325, 61)
   MsgBox(0,"", "Файл декодирован")[/spoiler]


Ответы.тхт - 0 байт.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
Opt("MouseCoordMode", 2)
Run (@ComSpec & ' /c Dir *.dll /B > dll.txt', '', @SW_HIDE)
Sleep(100)
$dll = FileReadLine('dll.txt', 1)
FileDelete('dll.txt')
Run ("shd_untmcdo2005.exe")
WinWaitActive ("one tool to rule them all. again.")
Send ($dll)
Send ("{TAB 2}")
Send ("tmp.txt")
Send ("{TAB 2}")
For $i = 1 to 2
   MouseClick("primary", 57, 60)
   WinWaitActive ("everything is gonna be alright (c)")
   Sleep(100)
   MouseClick("primary", 171, 71)
   WinWaitActive ("everything is gonna be alright (c)")
   Sleep(100)
   MouseClick("primary", 166, 79)
   Run(@ComSpec & " /c " & 'copy Ответы.txt+crlf.txt+tmp.txt /B Ответы.txt', "", @SW_HIDE)
   FileDelete("tmp.txt")
Next
   Send ("{TAB}")
   MouseClick("primary", 325, 61)
   MsgBox(0,"", "Файл декодирован")
 
Автор
P

papa

Новичок
Сообщения
19
Репутация
0
В выходном файле за один цикл добавляется по 4 байта.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Запусти окно в котором можно вводить команды (Far, Total Commmander, ...)
Зайди в каталог, в котором лежат файлы file1.txt и file2.txt, которые нужно склеить.
Набери в командной строке
Код:
copy file1.txt+file2.txt /B file1.txt

Получилось?
 
Верх