Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - копирование файлов по hash-имени из HEX исходного файла

Ответить
Настройки темы
CMD/BAT - копирование файлов по hash-имени из HEX исходного файла

Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


всем привет,

1. имеется папка с кучей файлов. у файлов вместо имени hash-абракадабра типа: 000ec4d858ebbaa80621fc19a608599f.chunk или aa8d9cd800e0c17bc5b03d488ab17572.chunk
2. имеется набор файлов с расширением EBX (и нормальными именами), в хексе которых эти hash-имена.

задача вот такая вот: кидаем EBX на BAT файл и соответствующие файлы .chunk копируются к исходному EBX и, было бы круто, эти скопированные .chunk файлы переименовывать в имя EBX с числовым индексом.

подскажите как такое реализовать.

p.s.: обнаружил, что после каждого hash-имени внутри EBX идёт hex-значение: FFFFFFFF

Отправлено: 21:24, 26-06-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Tosyk, как понять, что есть:
Цитата Tosyk:
в хексе которых эти hash-имена. »
Цитата Tosyk:
копируются к исходному EBX »
Цитата Tosyk:
переименовывать в имя EBX с числовым индексом »
? Где образцы тех и других файлов, упакованных в архив? Где примеры того, что есть, и что надо получить?
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:03, 26-06-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


прошу прощения, у меня голова садовая
вот примеры:
https://drive.google.com/file/d/16r6...ew?usp=sharing

возможно, когда вы посмотрите на них у вас не останется вопросов

Отправлено: 22:21, 26-06-2018 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Tosyk:
возможно, когда вы посмотрите на них у вас не останется вопросов »
Лично мне понятней не стало. Вы не ответили на первый и последний вопросы.

Отправлено: 22:33, 26-06-2018 | #4


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


если вы откроете любой из двух файлов .MeshSet из папки EBX моего примера в HEX редакторе то там перед каждым значением FFFFFFFF будет 32-ух значное имя файла из папки CHUNK моего же примера.

нужно просканировать .MeshSet выявить список всех таких имён и скопировать файлы с соответствующими именами из папки CHUNK в то место где лежит исходный .MeshSet

например для файла head_cole_mp_mesh 90110000000000001001000070009400.MeshSet список таких имён будет таким:
Код: Выделить весь код
305B5D766DEEDE8081AF49D0A42426CF
88AA965A017628C5D9180DBE0A938819
65FEA349ABF38F538453CEBDA3242277
479EAF685E58B752F331F73A4A28586F
а в папке CHUNK лежат файлы с такими же именами - нужно их скопировать в папку к этому head_cole_mp_mesh 90110000000000001001000070009400.MeshSet и переименовать в
Код: Выделить весь код
head_cole_mp_mesh 90110000000000001001000070009400_01.chunk
head_cole_mp_mesh 90110000000000001001000070009400_02.chunk
head_cole_mp_mesh 90110000000000001001000070009400_03.chunk
head_cole_mp_mesh 90110000000000001001000070009400_04.chunk

Отправлено: 22:46, 26-06-2018 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Tosyk:
нужно просканировать .MeshSet выявить список всех таких имён »
Ориентируемся только на то, что Вы сказали:
Цитата Tosyk:
перед каждым значением FFFFFFFF будет 32-ух значное имя файла »
?

Отправлено: 23:10, 26-06-2018 | #6


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


вообще это я сам придумал. если есть какая-то возможность понять где в этом файле (в данном случае .MeshSet) будут эти 32-ух значные имена НЕ ориентируясь на FFFFFFFF то это было бы просто отлично

edit: сейчас у меня в папке CHUNK 32000 файлов

Отправлено: 23:14, 26-06-2018 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Tosyk, хорошо бы. Но для этого нужно знать или иметь описание внутреннего формата этих файлов. Что это вообще такое?
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:22, 26-06-2018 | #8


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip sp_police_lowerbody01_c.zip
(296 байт, 0 просмотров)

ebx - это общий игровой формат движка frostbite. довольно разносторонний. там может всё что угодно содержаться, но что меня интересует так это только линки на эти 32-ух значные имена.
вот что то похожее на описание: https://pastebin.com/rGpBFwAV
в аттаче я прикрепил подобный файлу .MeshSet файл для линка к текстуре. из него можно узнать имя 4D42EF837BFB4F9CBD9E664F7959E7A3 и это ещё один файл из папки CHUNK только это уже будет текстура.

Отправлено: 23:41, 26-06-2018 | #9


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Tosyk, ну, вот, попробуйте в первом приближении (на PowerShell):
Скрытый текст
Код: Выделить весь код
$sRootFolder     = 'C:\Мои проекты\0167'
$sEBXSubFolder   = Join-Path -Path $sRootFolder -ChildPath 'EBX'
$sCHUNKSubFolder = Join-Path -Path $sRootFolder -ChildPath 'CHUNK'

$aByte4Find = [System.Byte[]](0xFF, 0xFF, 0xFF, 0xFF)

if(Test-Path -Path $sRootFolder -PathType Container) {
    if(Test-Path -Path $sEBXSubFolder -PathType Container) {
        if(Test-Path -Path $sCHUNKSubFolder -PathType Container) {
            Get-ChildItem -Path "$sEBXSubFolder\*.MeshSet" | ForEach-Object -Process {
                Write-Host "[$($_.FullName)]" -ForegroundColor Yellow

                $aByteContent = [System.IO.File]::ReadAllBytes($_.FullName)
                $iCount = 0

                for($i = 0; $i -le $aByteContent.Length - $aByte4Find.Length - 1; $i++) {
                    $bFound = $true

                    for($j = 0; $j -le $aByte4Find.Length - 1; $j++) {
                        if($aByteContent[$i + $j] -ne $aByte4Find[$j]) {
                            $bFound = $false
                            break
                        }
                    }

                    if($bFound) {
                        $sFoundFileName = [System.BitConverter]::ToString($aByteContent[$($i - 16) .. $($i - 1)]) -replace '-', ''

                        Write-Host "`tOffset:          $i"
                        Write-Host "`tFound file name: $sFoundFileName"

                        if(Test-Path -Path "$sCHUNKSubFolder\$sFoundFileName.chunk" -PathType Leaf) {
                            Write-Host "`tFile exists!" -ForegroundColor Green
                            $iCount++
                            [System.IO.File]::Copy("$sCHUNKSubFolder\$sFoundFileName.chunk", "$($_.DirectoryName)\$($_.BaseName)_$($iCount.ToString("00")).chunk", $true)
                        } else {
                            Write-Host "`tFile not exists!" -ForegroundColor Red
                        }
                        Write-Host ''
                    }
                }
                Write-Host ''
            }
        } else {
            Write-Host "Can't find CHUNK subfolder [$sCHUNKSubFolder]." -ForegroundColor Red
        }
    } else {
        Write-Host "Can't find EBX subfolder [$sEBXSubFolder]." -ForegroundColor Red
    }
} else {
    Write-Host "Can't find root folder [$sRootFolder]." -ForegroundColor Red
}

У меня вышли такие результаты




Отправлено: 00:58, 27-06-2018 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - копирование файлов по hash-имени из HEX исходного файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование файлов по списку из файла foma24 Скриптовые языки администрирования Windows 2 30-12-2022 15:35
CMD/BAT - [решено] Копирование всех файлов по сети с указанием имени пользователя Elven Скриптовые языки администрирования Windows 1 10-04-2014 17:41
CMD/BAT - копирование выбранного файла в определенное место и добавление к имени файла даты x800 Скриптовые языки администрирования Windows 0 19-02-2014 20:39
CMD/BAT - перемещение файлов в каталог созданный из части имени файла surrender1 Скриптовые языки администрирования Windows 9 10-10-2013 14:42
CMD/BAT - [решено] Копирование имени файла и определённой строки из него в другой файл Liquid Ocelot Скриптовые языки администрирования Windows 10 05-07-2013 09:35




 
Переход