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
)
)
**方法3:**via 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.
3条答案
按热度按时间e0bqpujr1#
方法一:
makecab
可以将一个二进制文件分割成更小的编码块,但它们不能被视为原始字节,类似于平面二进制文件,例如。通过copy
ie加入。如果您正在查看通过CMD编辑二进制文件,例如。文件修补但是,如果您只是想拆分文件,然后在不进行编辑的情况下将其合并为一个块,则可以通过extrac32
将这些块连接起来。例如,要使用
makecab
分割二进制文件,然后使用extrac32
连接,首先创建一个ddf(文本)文件:然后:
要取回原始文件,请确保所有区块都在同一个目录中:
MakeCAB引入了文件夹的概念来引用一组连续的压缩字节。
MakeCAB获取要压缩的产品或应用程序中的所有文件,将字节作为一个连续的字节流放置,压缩整个流,根据需要将其分割到文件夹中,然后用文件夹填充一个或多个文件柜。
**方法二:**对于原始字节块,powershell可以拆分文件:
**方法3:**via certutil & CMD:
备注:
1.块可以通过
copy /b
连接1.通过填充块号可以使文件名扩展名更整洁
1.可以循环以拆分整个目录
参见下面的示例输出:
方法2和3可以通过
copy
连接在Win 10上测试
2nc8po8w2#
没有内置的DOS命令。使用dos port of the unix split command:
有第三方的替代品,但这是最简单的。
wko9yo5t3#
您也可以从http://gnuwin32.sourceforge.net安装GnuWin
对于我的工作,我需要从一个大的Oracle导出文件
DataBase.bak
中提取一些行。此文件是一个二进制文件,它是文本行和二进制行的混合。
要提取两个特定行之间的所有行,我只需输入以下命令
第一个命令将从0到4114807的所有行提取到
from.A
文件中,并将从4114808到24114807的所有行提取到from.B
文件中。我在
Notepad++
中加载Database.Bak
文件时发现FROM行号(= 4114807)。注意:Notepad中显示的行号不等于
split
命令中使用的l
参数,因为Notepad行号是由LF
和CR
字符生成的!我使用第二个命令将.B文件中包含的所有前10357行提取到
to.A
文件中。要终止,我将
to.A
文件复制到包含所需提取的新Database.RANGE.bak
文件中。当工作完成后,我删除所有从. 和到.* 文件从当前目录。