1 (изменено: ilya20069, 2011-12-18 17:26:07)

Тема: AHK: FileAppend

Каким образом можно добавить в файл строку вида:

MZђThis program cannot be run in DOS mode

Хм.. даже браузер отказывается принимать левые символы.

loc:="F:\1.txt:test.exe"
fileappend, (тут должен быть .exe), *%loc%
   if errorlevel
   msgbox, Stream 1 write error!

Вобщем идея запихнуть целый exe'шник.
Fileappend ругается на unrecognized simbols.

2 (изменено: creature.ws, 2011-12-17 17:23:36)

Re: AHK: FileAppend

Вот бы пример кода вашего, в котором fileappend ругается…
//add
А зачем для записи в  ntfs поток использовать FileAppend?

3 (изменено: ilya20069, 2011-12-18 16:53:21)

Re: AHK: FileAppend

эмм.. есть другие варианты? Я просто попытался воспроизвести способ гражданина T800
Создать и записать информацию в альт поток получается, запустить оттуда .exe тоже, а записать exe - нет.
Образец exe дать не могу - браузер не воспринимает символы, ну как он выглядит все знают..

4 (изменено: creature.ws, 2011-12-18 18:36:17)

Re: AHK: FileAppend

Может быть пример с комментариями поможет


#NoEnv
#NoTrayIcon
#SingleInstance force
#KeyHistory 0
SetBatchLines, -1
FileEncoding, utf-8

if (A_IsCompiled = 1) {
   Msgbox, 64,, % "Executing from : " A_ScriptFullPath, 3
   ExitApp
}

SplitPath, A_AhkPath,, AhkDir
IfNotExist %AhkDir%\Compiler\Ahk2Exe.exe
{
   MsgBox, 16, Error, Ahk2Exe.exe not found, 3
   ExitApp
}

SplitPath, A_ScriptFullPath,,,, ScriptNameNoEXT
IfExist %A_ScriptFullPath%:%ScriptNameNoEXT%.exe  
{
   ; Если EXE с нужным именем уже записан в поток - запускаем
   MsgBox, 64,, %A_ScriptFullPath%:%ScriptNameNoEXT%.exe `n already exist!, 3
   RunWait %A_ScriptFullPath%:%ScriptNameNoEXT%.exe
   ; И удаляем EXE из потока
   ; Так хотелось бы сделать: 
   ; FileDelete, %A_ScriptFullPath%:%ScriptNameNoEXT%.exe
   ; Так приходится делать:
   FileRead, Script, %A_ScriptFullPath%
   FileDelete, %A_ScriptFullPath%
   FileAppend, %Script%, %A_ScriptFullPath%, UTF-8
   ; Смотрим на содержимое рабочей папки и не видим EXE в потоке
   Run, cmd /k cd /d "%A_ScriptDir%" && dir /r
   ExitApp
}

; Собираем подопытный EXE
RunWait, %AhkDir%\Compiler\Ahk2Exe.exe /in "%A_ScriptFullPath%", hide
; Копируем в поток скрипта
FileCopy, %A_ScriptDir%\%ScriptNameNoEXT%.exe, %A_ScriptFullPath%:%ScriptNameNoEXT%.exe
; Запускаем из потока
RunWait %A_ScriptFullPath%:%ScriptNameNoEXT%.exe
; После запускаем «видимый» EXE
RunWait %A_ScriptDir%\%ScriptNameNoEXT%.exe
; Удаляем видимый EXE
FileDelete, %A_ScriptDir%\%ScriptNameNoEXT%.exe
; Запускаем EXE из потока
RunWait %A_ScriptFullPath%:%ScriptNameNoEXT%.exe
; Смотрим на содержимое рабочей папки и видим EXE в потоке
Run, cmd /k cd /d "%A_ScriptDir%" && dir /r
ExitApp

Имеется в виду, что *.exe ведь в бинарном формате, «как текст» их писать-читать не совсем верно.

5 (изменено: ilya20069, 2011-12-18 18:51:09)

Re: AHK: FileAppend

Благодарю!
FileCopy работает. Остальное мне было известно 

Run, cmd /k cd /d "%A_ScriptDir%" && dir /r

Консоль: Недопустимый ключ "r".

6 (изменено: creature.ws, 2011-12-18 18:56:00)

Re: AHK: FileAppend

В Win7 –

 
Dir /?
…
 /R          Display alternate data streams of the file.

В XP – увы

7

Re: AHK: FileAppend

на XP есть много прог для этого, например, я, пользуюсь Stream Explorer