我想将二进制文件拆分成更小的 block 。任何人都知道一个Windows命令吗?
由于 Android 的 UNCOMPRESS_DATA_MAX 约束,我无法用 1MB 或更大的文件覆盖数据库。因此,如果有更好的方法可以做到这一点,我也可以。
最佳答案
方法一:makecab
可以将二进制文件以自己的格式拆分成更小的编码 block ,但不能将它们仅视为原始字节,类似于平面二进制文件,例如。通过 copy
.然而,这些 block 可以通过 extrac32
加入。 .
首先制作一个 ddf(文本)文件:
.Set CabinetNameTemplate=test_*.cab; <-- Enter chunk name format
.Set MaxDiskSize=900000; <-- Enter file split/chunk size
.Set ClusterSize=1000
.Set Cabinet=on;
.Set Compress=off;
.set CompressionType=LZX;
.set CompressionMemory=21
.Set DiskDirectoryTemplate=;
file.in
然后:rem Optional: set compression on to save disk space
makecab /f ddf.txt
要取回原始文件,请确保所有 block 都在同一目录中:REM join by calling 1st file in the sequence
extrac32 test_1.cab file.out
MakeCAB引入了文件夹的概念来指代一组连续的压缩字节。“MakeCAB 获取产品或应用程序中被压缩的所有文件,将字节放置为一个连续的字节流,压缩整个流,根据需要将其分割到文件夹中,然后用文件夹填充一个或多个文件柜。 "
方法二:
对于原始字节 block ,powershell 可以拆分文件:
set size=1000000
set file=test.mp3
for %j in (%file%) do (
set /a chunks=%~zj/%size% >nul
for /l %i in (0,1,!chunks!) do (
set /a tail=%~zj-%i*%size% >nul
powershell gc %file% -Encoding byte -Tail !tail! ^| sc %file%_%i -Encoding byte
if %i lss !chunks! FSUTIL file seteof %file%_%i %size% >nul
)
)
方法三:通过 certutil & CMD:set file="x.7z" &REM compressed to generate CRLF pairs
set max=70000000 &REM certutil has max file limit around 74MB
REM Findstr line limit 8k
REM Workaround: wrap in some archive to generate CRLF pairs
for %i in (%file%) do (
set /a num=%~zi/%max% >nul &REM No. of chunks
set /a last=%~zi%%max% >nul &REM size of last chunk
if %last%==0 set /a num=num-1 &REM ove zero byte chunk
set size=%~zi
)
ren %file% %file%.0
for /l %i in (1 1 %num%) do (
set /a s1=%i*%max% >nul
set /a s2="(%i+1)*%max%" >nul
set /a prev=%i-1 >nul
echo Writing %file%.%i
type %file%.!prev! | (
(for /l %j in (1 1 %max%) do pause)>nul& findstr "^"> %file%.%i)
FSUTIL file seteof %file%.!prev! %max% >nul
)
if not %last%==0 FSUTIL file seteof %file%.%num% %last% >nul
echo Done.
备注:copy /b
加入 block 请参阅下面的示例输出:
Directory of C:\Users\Stax\Desktop\Parking
03/05/2022 01:04 <DIR> .
03/05/2022 01:04 <DIR> ..
03/05/2022 01:04 407 Court Notice.pdf.000
03/05/2022 01:04 4,000 Court Notice.pdf.001
03/05/2022 01:04 4,000 Court Notice.pdf.002
03/05/2022 01:04 557 Parking fine.pdf.000
03/05/2022 01:04 4,000 Parking fine.pdf.001
03/05/2022 01:04 4,000 Parking fine.pdf.002
03/05/2022 01:04 4,000 Parking fine.pdf.003
03/05/2022 01:04 4,000 Parking fine.pdf.004
8 File(s) 24,964 bytes
然后可以通过 copy
加入方法 2 和 3在 Win 10 上测试
关于android - 用于分割二进制文件的 Windows 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693795/