|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - автоматический поиск и замена HEX в файлах |
|
CMD/BAT - автоматический поиск и замена HEX в файлах
|
Старожил Сообщения: 166 |
Возможно ли такое сделать с помощью cmd? Нужно автоматически поправить HEX большого количества файлов с последующим переименованием.
И вот ещё: как сделать так чтобы такой скрипт работал: 1 - при перетаскивании на него одного/группы файлов 2 - при запуске производился поиск и обработка файлов вглубь по каталогам. p.s.: иногда нужно не заменить hex, а добавить его в определённое место в файле. |
|
Отправлено: 21:51, 05-12-2010 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Так, значит получается скрипт ищет блок в файле DXT5_2048x2048.dds и подставляет в то же место в файл mcc001n2b. SDD. Это работает!
Но при этом получается? что нужен файл DXT5_2048x2048.dds, который вечит 4 мб, хотя думаю можно удалить всё, что не нужно в HEX'e этого файла (думаю при этом будет весить не больше трёх килобайт). А как осуществить поиск определённого блока и замену этого блока на новый по маске, допустим *. SDD? |
Отправлено: 08:29, 07-12-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
Цитата Tosyk:
Цитата Tosyk:
|
|||
Отправлено: 08:46, 07-12-2010 | #12 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Так, постараюсь объяснить исходя из того, что я от вас уже узнал.
Дано: 1000 файлов с расширением *. SDD 700 файлов с заданной позиции (=0) имеют блок заданного размера (128 байт) 1-ого типа (DXT5) 200 файлов с заданной позиции (=0) имеют блок заданного размера (128 байт) 2-ого типа (DXT1) 100 файлов с заданной позиции (=0) имеют блок заданного размера (128 байт) 3-ого типа (DXT1a) типы равны по размеру блока, но отличаются содержанием этого блока Задача: 1 - в каждом файле с расширением *. SDD заменить блок заданного размера (128 байт) на новый тип 2 - переименовать расширение *. SDD в *.dds |
Отправлено: 09:36, 07-12-2010 | #13 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Tosyk, 700+200+100=1000, т.е. каждому SDD-файлу соответствует какой-то один блок из 3-х, допустим эти блоки находятся в файлах DXT5.BIN, DXT1.BIN, DXT1a.BIN, которые находятся в том же каталоге, где батник... осталось решить какой из этих трёх блоков выбрать для конкретного SDD-файла?... или это не имеет значения, т.е. по порядку - первые 700 -> DXT5.BIN, следующие 200 -> DXT1.BIN и т.д.?.. и какова примерно структура каталога с SDD-файлами?
|
Отправлено: 11:20, 07-12-2010 | #14 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Цитата amel27:
Цитата amel27:
Цитата amel27:
DXT1 256x256 DXT1 512x512 DXT1 1024x512 DXT1 1024x1024 DXT1 2048x2048 DXT1 2048x1024 DXT5 256x256 DXT5 512x512 DXT5 1024x512 DXT5 1024x1024 DXT5 2048x2048 DXT5 2048x1024 ... цифры (пр.: 256x256) - это размер текстуры в пикселях. Типов текстур может быть и больше. Каждому типу соответствует свой блок заданного размера (128 байт) и начинается он с заданной позиции (=0). |
|||
Отправлено: 11:39, 07-12-2010 | #15 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
|
|
Отправлено: 12:07, 07-12-2010 | #16 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Цитата amel27:
Вот я и говорил об этом в моём посте чуть выше Цитата Tosyk:
нужно заменить на Так вот, можно ли искать конкретно эти самые значения? Допустим в определённых байтах ищем SDD, затем ..@.., затем 5TXD, затем ...@... и если сочетание всех этих значение найдено, то приравниваем этот файл к типу DXT5 2048x1024 (в данном случае) и заменяем его первые 128 байт на новые. |
||
Отправлено: 12:27, 07-12-2010 | #17 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
- считываем заголовок во временный файл; - ищем точно такой же файл в библиотеке "неверных шаблонов"; - если файл найден, берем новый шаблон с таким же именем; - восстанавливаем новый заголовок только надо определиться с положением/размером блока, однозначно идентифицирующего тип "неверного" шаблона и "построить" библиотеку пар шаблонов старый/новый Цитата Tosyk:
|
||
Отправлено: 05:47, 08-12-2010 | #18 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Цитата amel27:
|
|
Отправлено: 06:45, 08-12-2010 | #19 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
Цитата:
допустим, все *.OLD/*.NEW шаблоны лежат в каталоге с батником, а SDD-файлы в папке C:\TEST, тогда батник по обработке может быть таким: @echo off SETLOCAL EnableDelayedExpansion (for /r "C:\TEST" %%a in (*.sdd) do ( dd bs=1c count=128 if="%%a" of="%~n0.tmp"2>nul set "$b="&for %%b in (*.old) do if not defined $b fc /b "%~n0.tmp" "%%b" >nul&& set "$b=%%~nb" if defined $b if not exist "!$b!.new" (echo File "!$b!.new" not found^^!) else ( dd bs=1c count=128 if="!$b!.new" of="%%a"2>nul ren "%%a" "%%~na.dds" ))) |
||
Отправлено: 12:14, 08-12-2010 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Сравнение и замена в файлах .txt | Deep2007 | Скриптовые языки администрирования Windows | 4 | 19-11-2010 19:08 | |
Autoit работа в hex поиск offset'а | aktivizion | AutoIt | 3 | 14-03-2010 21:29 | |
C/C++ - Поиск текста в файлах | student_po | Программирование и базы данных | 6 | 04-09-2009 23:33 | |
Замена одной фразы в разных файлах | Punsher | Программное обеспечение Linux и FreeBSD | 3 | 11-03-2008 13:24 | |
Пакетная замена в html-файлах | y3ep | Программное обеспечение Windows | 7 | 11-06-2004 08:06 |
|