|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - копирование файлов по hash-имени из HEX исходного файла |
|
CMD/BAT - копирование файлов по hash-имени из HEX исходного файла
|
Старожил Сообщения: 166 |
всем привет,
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 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать извините, а как пользоваться?
edit: и ещё, я хотел вот так делать: перетаскиваю .MeshSet (это по сути тот же EBX) файл на исполняемый .bat и все нужные .chunk копируются в папку к исходному .MeshSet. такое можно с ним делать? |
Последний раз редактировалось Tosyk, 27-06-2018 в 01:50. Отправлено: 01:43, 27-06-2018 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
Выполнить сохранённый скрипт командой наподобие: Цитата Tosyk:
Цитата Tosyk:
|
|||
Отправлено: 02:31, 27-06-2018 | #12 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать *.MeshSet - это только один из форматов EBX файлов. у меня две папки CHUNKS и BUNDLES. про CHUNKS я уже рассказал, а в папке BUNDLES довольно конкретная и сложная структура файлов с правильными именами и своими расширениями. 60% всех файлов в BUNDLES это .ebx файлы, остальные это .MeshSet/.dxTexture/.iTexture и т.д. в большинстве своём это просто скрипты и линки на файлы из папки CHUNKS. Иногда попадаются другие типы .ebx файлов, полноценные, имеющие, например, внутри 3д геометрию, другие настройки физики.
мне не нужны все эти файлы, моя цель сейчас это выбрать нужные мне .MeshSet и перетягиванием на исполняемый скрипт получить копии файлов из папки CHUNKS. Если всё будет хорошо работать, возможно можно будет попробовать коллекционировать таким образом .chunk файлы для других типов как то .dxTexture/.iTexture и т.д. |
Отправлено: 09:58, 27-06-2018 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Tosyk, ещё раз: где искать соответствующие файлы *.chunk по отношению к файлу .MeshSet? Вот мы перетянули на скрипт файл .MeshSet, получили в скрипте полный путь к нему. Где искать файлы *.chunk относительно пути этого файла .MeshSet?
|
Отправлено: 19:41, 27-06-2018 | #14 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать файлы .chunk ищем по указанному адресу, может быть любой. безотносительно файлов .MeshSet
|
Отправлено: 22:07, 27-06-2018 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
|
|
Отправлено: 22:44, 27-06-2018 | #16 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать так нужно этот путь в скрипте указать
|
Отправлено: 23:53, 27-06-2018 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Tosyk, указать в скрипте? Тогда в чём смысл перетаскивания файла на скрипт? Совершенно не понимаю.
Впрочем, как скажете. Можете задавать путь к файлам *.chunk тупо в скрипте (умолчанием второго аргумента). C:\Мои проекты\0167\Sample.ps1
param(
[Parameter(Mandatory = $true)][System.String]$SourceFile,
[System.String]$sCHUNKFolder = 'C:\Мои проекты\0167\CHUNK'
)
$aByte4Find = [System.Byte[]](0xFF, 0xFF, 0xFF, 0xFF)
if(Test-Path -Path $SourceFile -PathType Leaf) {
$oSourceFile = [System.IO.FileInfo]$SourceFile
if(Test-Path -Path $sCHUNKFolder -PathType Container) {
Write-Host "[$($oSourceFile.FullName)]" -ForegroundColor Yellow
$aByteContent = [System.IO.File]::ReadAllBytes($oSourceFile.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"
$sChunkFile = "$sCHUNKFolder\$sFoundFileName.chunk"
if(Test-Path -Path $sChunkFile -PathType Leaf) {
Write-Host "`tFile [$sChunkFile] found!" -ForegroundColor Green
Write-Host "`tCopy to [$($oSourceFile.DirectoryName)] as [$($oSourceFile.BaseName)_$($iCount.ToString("00")).chunk]." -ForegroundColor Green
$iCount++
[System.IO.File]::Copy($sChunkFile, "$($oSourceFile.DirectoryName)\$($oSourceFile.BaseName)_$($iCount.ToString("00")).chunk", $true)
} else {
Write-Host "`tFile [$sChunkFile] not found!" -ForegroundColor Red
}
Write-Host ''
}
}
} else {
Write-Host "Can't find CHUNK folder [$sCHUNKFolder]." -ForegroundColor Red
}
} else {
Write-Host "Can't find source file [$SourceFile]." -ForegroundColor Red
}
C:\Мои проекты\0167\RunPowerShell.vbs
Option Explicit
Dim i
Dim sArguments
sArguments = ""
For i = 0 To WScript.Arguments.Count - 1
sArguments = sArguments & " """ & WScript.Arguments.Item(i) & """"
Next
WScript.CreateObject("WScript.Shell").Run """powershell.exe"" -File ""C:\Мои проекты\0167\Sample.ps1"" " & sArguments, 1, False
WScript.Quit 0
Поскольку умолчальным глаголом для .ps1 является отнюдь не «Выполнить с помощью PowerShell» (и что я менять, в общем-то, не советую), то используем промежуточный скрипт WSH, на который и надо перетаскивать файл .MeshSet. Не забудьте поправить все пути в скриптах и сами имена скриптов на свои. |
Отправлено: 01:25, 28-06-2018 | #18 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать т.е. скрипт RunPowerShell.vbs использует скрипт Sample.ps1 и перетаскивать исходный файл нужно именно на RunPowerShell.vbs?
|
Отправлено: 12:58, 28-06-2018 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Tosyk, да.
|
Отправлено: 18:33, 28-06-2018 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|