|
Компьютерный форум 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 | Цитировать что-то не может найти ни одного файла.
все пути прописал правильно, проверил. все чанки у меня в одной папке, до которой я указываю путь. беру файл: D:\_r\fb\_ex_test\bundles\res\characters\heads\sp_brady\sp_brady_head_mesh 00160000000000003801000070009400.MeshSet и кидаю его на ps_chunks0_search.vbs. в итоге мигает чёрное окно с красным текстом. правильный чанк по пути имеется. |
Последний раз редактировалось Tosyk, 29-06-2018 в 00:23. Отправлено: 21:26, 28-06-2018 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Tosyk, ну, если у меня работает, а у Вас нет, значит, явно что-то не так.
Покажите Ваш код PowerShell с исправленными путями. Покажите Ваш код ps_chunks0_search.vbs. Покажите содержимое каталога с «все чанки у меня в одной папке, до которой я указываю путь». Упакуйте в архив Ваш sp_brady_head_mesh 00160000000000003801000070009400.MeshSet и приложите к сообщению. Покажите скриншот с: Цитата Tosyk:
|
|
Отправлено: 00:44, 29-06-2018 | #22 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать я бы сделал скриншот, но как? окно ведь мигает. можно как-то запаузить его?
|
Отправлено: 09:14, 29-06-2018 | #23 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:57, 29-06-2018 | #24 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать в окошке было написано, что у меня компьютере не разрешено выполнение таких скриптов. я дал разрешение и всё заработало.
несколько вопросов: 1. можно ли сделать поиск чанков рекурсивным? - если у меня в папке CHUNK будет структура сложнее одной папки 2. можно ли сделать чтобы скрипт не заменял скопированный чанк если он уже есть в папке а именовал его как-то с суфиксом? 3. можно ли добавить возможность копирования чанков с их оригиналными именами рядом с исходным файлом в папку CHUNKS? 4. можно ли как-то исбежать шаг разрешения выполнения подобных скриптов на компе? вообще это очень крутая штука, работает как надо, спасибо вам огромное! много лет не решался написать по этому поводу сюда p.s.: можно ли как-то транслитировать этот код в auto-it и зашить в exe? |
Отправлено: 21:40, 29-06-2018 | #25 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
Цитата Tosyk:
Цитата Tosyk:
Цитата Tosyk:
Цитата Tosyk:
|
|||||
Отправлено: 23:51, 29-06-2018 | #26 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Цитата Iska:
|
|||
Отправлено: 10:16, 30-06-2018 | #27 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
Цитата Tosyk:
|
||
Отправлено: 12:20, 30-06-2018 | #28 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать |
Отправлено: 12:46, 30-06-2018 | #29 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Tosyk, чем больше я пытаюсь осмыслить все озвученные Вами хотелки, тем меньше они мне нравятся. Если реализовать всё задуманное — получится полная каша.
В общем — рекурсивный поиск и нумерация найденных дубликатов. Существующие файлы по месту назначения по-прежнему будут переписываться, не вижу никакого смысла менять данное поведение. Скрытый текст
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"
$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($sChunkFile, "$($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
|
Отправлено: 07:45, 01-07-2018 | #30 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|