|
Компьютерный форум 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 | Цитировать вроде бы начало работать, но через 2 минуты выдало эксепшены:
Скрытый текст
[D:\_r\fb\interstate_76_premium_pc\_ex_test\bundles\res\characters\heads\head01\
head01_enemy_mesh 70110000000000001001000070009400.MeshSet] Offset: 212 Found file name: 1689A37995A680D6AABEDA914DD62F89 File [D:\_r\fb\interstate_76_premium_pc\_ex_test\chunks\chunks0\1689a 37995a680d6aabeda914dd62f89.chunk] found! Copy to [D:\_r\fb\interstate_76_premium_pc\_ex_test\bundles\res\characte rs\heads\head01] as [head01_enemy_mesh 70110000000000001001000070009400_01_01.ch unk]. Исключение при вызове "Copy" с "3" аргументами: "Файл 'D:\_r\fb\interstate_76_p remium_pc\_ex_test\chunks\1689A37995A680D6AABEDA914DD62F89.chunk' не найден." D:\_r\fb\interstate_76_premium_pc\tools\ps_chunks.ps1:47 знак:64 + [System.IO.File]::Copy($sChunkFile, "$($oSourceFile.D ire ... + ~~~~~~~~~~~~~~ ~~~ + CategoryInfo : NotSpecified: ( ![]() + FullyQualifiedErrorId : FileNotFoundException Offset: 388 Found file name: 4359EB953C735D805EE6F7B155BC403B File [D:\_r\fb\interstate_76_premium_pc\_ex_test\chunks\chunks1\4359e b953c735d805ee6f7b155bc403b.chunk] found! Copy to [D:\_r\fb\interstate_76_premium_pc\_ex_test\bundles\res\characte rs\heads\head01] as [head01_enemy_mesh 70110000000000001001000070009400_02_01.ch unk]. Исключение при вызове "Copy" с "3" аргументами: "Файл 'D:\_r\fb\interstate_76_p remium_pc\_ex_test\chunks\4359EB953C735D805EE6F7B155BC403B.chunk' не найден." D:\_r\fb\interstate_76_premium_pc\tools\ps_chunks.ps1:47 знак:64 + [System.IO.File]::Copy($sChunkFile, "$($oSourceFile.D ire ... + ~~~~~~~~~~~~~~ ~~~ + CategoryInfo : NotSpecified: ( ![]() + FullyQualifiedErrorId : FileNotFoundException Offset: 564 Found file name: B59CF3BB396E1BC16C1585473170565F File [D:\_r\fb\interstate_76_premium_pc\_ex_test\chunks\chunks1\b59cf 3bb396e1bc16c1585473170565f.chunk] found! Copy to [D:\_r\fb\interstate_76_premium_pc\_ex_test\bundles\res\characte rs\heads\head01] as [head01_enemy_mesh 70110000000000001001000070009400_03_01.ch unk]. Исключение при вызове "Copy" с "3" аргументами: "Файл 'D:\_r\fb\interstate_76_p remium_pc\_ex_test\chunks\B59CF3BB396E1BC16C1585473170565F.chunk' не найден." D:\_r\fb\interstate_76_premium_pc\tools\ps_chunks.ps1:47 знак:64 + [System.IO.File]::Copy($sChunkFile, "$($oSourceFile.D ire ... + ~~~~~~~~~~~~~~ ~~~ + CategoryInfo : NotSpecified: ( ![]() + FullyQualifiedErrorId : FileNotFoundException Offset: 740 Found file name: 2D70DB36CE8988E189CEBD5F24B75895 File [D:\_r\fb\interstate_76_premium_pc\_ex_test\chunks\chunks1\2d70d b36ce8988e189cebd5f24b75895.chunk] found! Copy to [D:\_r\fb\interstate_76_premium_pc\_ex_test\bundles\res\characte rs\heads\head01] as [head01_enemy_mesh 70110000000000001001000070009400_04_01.ch unk]. Исключение при вызове "Copy" с "3" аргументами: "Файл 'D:\_r\fb\interstate_76_p remium_pc\_ex_test\chunks\2D70DB36CE8988E189CEBD5F24B75895.chunk' не найден." D:\_r\fb\interstate_76_premium_pc\tools\ps_chunks.ps1:47 знак:64 + [System.IO.File]::Copy($sChunkFile, "$($oSourceFile.D ire ... + ~~~~~~~~~~~~~~ ~~~ + CategoryInfo : NotSpecified: ( ![]() + FullyQualifiedErrorId : FileNotFoundException Press Enter to close... |
Отправлено: 11:38, 01-07-2018 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Поменял одну неправильную строку и убрал одну лишнюю:
Скрытый текст
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"
$cChunkFiles = @(Get-ChildItem -Path "$sCHUNKFolder\$sFoundFileName.chunk" -File -Recurse)
if($cChunkFiles.Count) {
$iCount++
$jCount = 0
$cChunkFiles | ForEach-Object -Process {
$jCount++
$sDestFileName = "$($oSourceFile.BaseName)_$($iCount.ToString("00"))_$($jCount.ToString("00")).chunk"
Write-Host "`tFile [$($_.FullName)] found!" -ForegroundColor Green
Write-Host "`tCopy to [$($oSourceFile.DirectoryName)] as [$sDestFileName]." -ForegroundColor Green
[System.IO.File]::Copy($_.FullName, "$($oSourceFile.DirectoryName)\$sDestFileName", $true)
}
} else {
Write-Host "`tFile(s) [$sFoundFileName.chunk] not found in folder [$sCHUNKFolder]!" -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
}
Write-Host 'Press Enter to close...' -NoNewline; Read-Host | Out-Null
Как теперь? |
Отправлено: 12:37, 02-07-2018 | #32 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать всё классно работает!
можете ли добавить копирование эти же чанков с их оригинальными именами в папку CHUNKS рядом с исходным файлом? для консистентности |
Отправлено: 23:31, 02-07-2018 | #33 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Tosyk, не мытьём, так катаньем, да
![]() Добавьте: if(-not [System.IO.Directory]::Exists("$($oSourceFile.DirectoryName)\CHUNKS")) { [System.IO.Directory]::CreateDirectory("$($oSourceFile.DirectoryName)\CHUNKS") } [System.IO.File]::Copy($_.FullName, "$($oSourceFile.DirectoryName)\CHUNKS\$($_.Name)", $true) |
Последний раз редактировалось Iska, 06-07-2018 в 15:44. Причина: Заменил командлет Test-Path на [System.IO.Directory]::Exists() Отправлено: 15:37, 06-07-2018 | #34 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|