Розділити чи скопіювати файл, пропускаючи байт


1

Я шукаю рідний cmd Windows або команду powershell для емуляції тих же дій, що і 'dd'в Linux.

У мене є 2 об'єднані файли, один доданий до іншого, і я знаю вказівник байтів для початку та кінця.

У Linux я просто використовую ddта переходжу до відповідного вказівника.

Я не можу за все життя знайти рідну команду в Windows, яка робить щось подібне.

Я розглядав, як надути менший з двох файлів, щоб вони були абсолютно однакового розміру, тоді використовуючи splitкоманду, однак Windows також, схоже, його не має.

Будь-які варіанти в Powershell | Cmd?

Будь ласка, ні, я не шукаю сторонніх рішень


1
Windows традиційно не дозволяє отримати доступ до необмеженого диска. Я впевнений, що це шлях, але вони зіткнулися з великими неприємностями, щоб запобігти таким операціям, як ті, які ddіснують.
Френк Томас

Відповіді:


1

Ви можете використовувати PowerShell! Існує кілька способів, як ви могли це зробити, але, мабуть, найясніший метод - це використання Get-Content/ gcта Set-Content/ scпереміщення байтів. Припустимо, у нас був merged.extфайл, де перші сто байт - це один файл, а решта - інший:

$bytes = gc .\merged.ext -Encoding Byte -Raw
sc .\part1.ext ([byte[]]($bytes | select -First 100)) -Encoding Byte
sc .\part2.ext ([byte[]]($bytes | select -Skip 100)) -Encoding Byte

Дивно, що Set-Contentпри роботі з байтами ( -Encoding Byte) хочеться, щоб його вхід був саме байтовим масивом, а не просто послідовністю, яка, як правило, містить байти, тому нам потрібно явно передати byte[].

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.