PSX Planet: SONY PlayStation Community

PSX Planet: SONY PlayStation Community (https://psxplanet.ru/forum/index.php)
-   Технологии (https://psxplanet.ru/forum/forumdisplay.php?f=411)
-   -   Чем отрезать несколько байт автоматом у 6к файлов? (https://psxplanet.ru/forum/showthread.php?t=24312)

SILENT_P 07.03.2013 22:49

Чем отрезать несколько байт автоматом у 6к файлов?
 
Не буду писать лишние подробности и сразу к делу:
  • Нужен какой-нибудь инструмент/плагин/что-нибудь, который сможет отрезать несколько байт сверху у более чем 6 тысяч файлов автоматически.

Отрезать и сохранить без других операций (файлы это картинки dds маленькие). Есть варианты? Спасибо.
Может в среде линукс есть для этого средства? (хотя бы без интерфейса что-нибудь)
Вручную это сделать просто нереально при всем желании, хекс редакторы обычно не предоставляют функционала для работы с кучей файлов автоматом. (ошибаюсь?)

Конкретно сейчас необходимо отрезать 384 байта сверху у 4543 небольших файлов.

jterror 08.03.2013 07:20

Ответ: Чем отрезать несколько байт автоматом у 6к файлов?
 
Распаковать редактор http://www.chmaas.handshake.de/delph...2.htm#download в папку на винте.
Создать скрипт и кинуть в ту же папку.
cutter.xsc
Код:

ADR 0
DEL 384

Создать батник и кинуть в ту же папку.
cutter.bat
Код:

for %%f in (*.dds) do xvi32.exe %%f /S=cutter.xsc
pause

Кинуть все dds файлы в ту же папку и запустить батник.

SILENT_P 08.03.2013 14:18

Ответ: Чем отрезать несколько байт автоматом у 6к файлов?
 
jterror, благодарю, работает как часы, окно программы сверкает по чаще чем "эпилептические" *.swf. Замечательно, весомая помощь.

Если не затруднит, немного изменить скрипт (это не обязательно, есть вдруг есть время и желание):
  • В каждом dds файле сместится на 368 байт и удалить только с 369 по 384 байт включительно (итого 16 байт удалить). больше ничего. заранее спасибо.

Сам я додумался запихнуть все ддс файлы в имг образ через ультра исо и в массиве скриптом 010 editor'а удалять нужные строки в каждом файле отсчитывая от постоянных байт в заголовках, но это слишком трудоёмко.

jterror 08.03.2013 18:36

Ответ: Чем отрезать несколько байт автоматом у 6к файлов?
 
Цитата:

Сообщение от SILENT_P (Сообщение 160919)
  • В каждом dds файле сместится на 368 байт и удалить только с 369 по 384 байт включительно (итого 16 байт удалить). больше ничего. заранее спасибо.

Эээ, а разве это не очевидно? Первая команда переходит на адрес, вторая удаляет. Если смещаться от начала, то вроде так и будет? (мог промазать, т.к. не силен в арифметике)
Код:

ADR 368
DEL 16

В той же папке есть файл справки XVI32U.chm и в нём все команды скрипта перечислены.

SILENT_P 08.03.2013 21:18

Ответ: Чем отрезать несколько байт автоматом у 6к файлов?
 
Цитата:

Первая команда переходит на адрес, вторая удаляет.
Разобрался после пояснения, еще раз большое спасибо.

jterror 09.03.2013 03:51

Ответ: Чем отрезать несколько байт автоматом у 6к файлов?
 
Цитата:

Сообщение от SILENT_P (Сообщение 160919)
Сам я додумался запихнуть все ддс файлы в имг образ через ультра исо и в массиве скриптом 010 editor'а

(запоздало) Вспомнил, что у меня тоже стоит 010 Editor. Там целый язык, который позволяет делать без эпилептического батника.
cutter.1sc
Код:

void DoFile(char filename[])
{
    FileOpen(filename);
    DeleteBytes(369, 16); //<<=====
    FileSave();
    FileClose(); 
}

char dir[1024];
dir = InputString("input", "dds folder:", "C:/myfiles/"); //<<=====

TFileList fl = FindFiles(dir, "*.dds"); //<<=====
int i;
for(i=0; i < fl.filecount; i++)
{
    DoFile(dir + fl.file[i].filename);
}
MessageBox(idOk, "Processing", "Done %d files.", fl.filecount);

Стрелочками помечены ключевые места.


Часовой пояс GMT +3, время: 06:47.

Перевод: zCarot
Права | Copyright ©
© PSX Planet Community 2003-2024