![]() |
Массовое редактирование бинарных фаилов
Имеется около 50 ти фаилов, во всех по одному и тому же адресу нужно нужно исправить предположим 1C на 1E т.е. по адресу 0x00000820 1C на 1E.
По подсказке пользователя "Iska" (копать FileOpen(), FileSetPos(), FileWrite(), FileClose()) почитал в справке (встроенной AutoIT) и разобрался, вроде, только со строкой FileOpen, т.е. FileOpen("1.img", 16) , далее я так понимаю что должно быть далее должно быть что то типа FileSetPos ("1.img", 0x00000820, ***); ***- это я не совсем понял, но предполагаю что тут должно быть значение на которое я хочу заменить? и тогда FileWrite мне не нужно (этой командой я смог только добавить в конец фаила свои значения, а не там где мне это нужно =( ). Извиняюсь если непонятно выразился, недавно узнал про AutoIT, а MS-dos знаю не супер отлично, но хочу поправить положение дел. Если кто сможет помочь буду благодарен. |
Цитата:
Функция FileSetPos Функция FileWrite |
maxd2007,
Попробуйте примерно так. Код:
Local $hFile, $tData, $sFile = @ScriptDir & '\test.bin' |
madmasles, Вы его этим «;Create bin file» скорее запутаете ;).
|
Iska, поправил. :)
|
Ваш скрипт работает ))), но можно я задам Вам вопросы:
1) $sFile - что это такое? когда я читал документацию то там было написано что это хендл фаилы, но судя по Вашему скрипту похоже что Вы используете его как переменную и вот эта строчка $hFile = FileOpen($sFile, 18) задает ее параметр, так что же такое $hFile? Почему цифра 18? (в документации указана: "16 = Force binary mode (See Remarks)" ). 2) Local $hFile, $tData, $sFile = @ScriptDir & '\test.bin' - эта строчка от части понятна что она создает фаил test.bin в директории рядом со скриптом, но что означаетl $hFile, $tData, $sFile? 3) Я не понял окончания: ConsoleWrite(FileGetSize($sFile) & @TAB & StringMid(FileRead($sFile & '.old'), 223, 13) & @LF) ConsoleWrite(FileGetSize($sFile) & @TAB & StringMid(FileRead($sFile), 223, 13) & @LF) Я понимаю что напрягаю нубскими вопросами, но если будет время и возможность буду признателен за пояснения. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Еще раз спасибо, можно уточнить некоторые моменты:
1) Local $hFile, $tData, $sFile = @ScriptDir & '\test.bin' т.е. это получается что если в скрипте где то указано $hFile или $tData или $sFile то это будет значить обращение в фаилу test.bin в директории рядом со скриптом? 2) В этой строчке: ConsoleWrite(FileGetSize($sFile) & @TAB & StringMid(FileRead($sFile & '.old'), 223, 13) & @LF) ConsoleWrite(FileGetSize($sFile) & @TAB & StringMid(FileRead($sFile), 223, 13) & @LF) я не понял зачем она и что она делает, ведь работа с фаилом заканчивается здесь: $hFile = FileOpen($sFile, 1) FileSetPos($hFile, 0x000000DF, 0) FileWrite($hFile, Chr(0x2D) & Chr(0x6D) & Chr(0x61) & Chr(0x64) & Chr(0x6D) & Chr(0x61) & Chr(0x73) & Chr(0x6C) & Chr(0x65) & Chr(0x73) & Chr(0x2D)) FileClose($hFile) |
Цитата:
Эту строку можно было бы записать и так: Код:
Local $hFile Код:
Local $hFile, $tData, $sFile = @ScriptDir & '\test.bin' Код:
Local $hFile Цитата:
|
maxd2007, вы приводите тексты описаний из англ. справки. Если вы новичок, хочу чтобы не прошло мимо наличие русской справки
|
Время: 10:18. |
Время: 10:18.
© OSzone.net 2001-