我正在尝试使用Windows批处理文件将多个文件连接在一起,以生成文件的单个图像。现在,我发现这可以使用copy“copy file1 + file2 + file3 + file4 FileConcat”完成,但我想要做的是启动file1 @ byte address 00,然后启动file2 @ byte address 999424,start file3 @ byte address 3997696和file4 @字节地址4001536.我可以使用以下内容在Linux中执行此操作但是有没有办法在Windows中执行此操作而无需编写特定的应用程序?任何帮助,非常感谢。
set COMBINEDFILE=IMAGE/combined.srec
dd conv=notrunc bs=1 if=INPUT/FILE1.srec of=$COMBINEDFILE seek=0
dd conv=notrunc bs=1 if=INPUT/FILE2.xap of=$COMBINEDFILE seek=999424
dd conv=notrunc bs=1 if=INPUT/FILE3.html of=$COMBINEDFILE seek=3997696
dd conv=notrunc bs=1 if=INPUT/FILE4.js of=$COMBINEDFILE seek=4001536
感谢您的帮助
答案 0 :(得分:1)
我对LS_dev的回答有另一个答案,但这是基于他的答案,所以我不能相信它。我没有使用循环中的多个填充文件生成填充,而是根据所需的填充生成一个空文件,并将其附加到文件中。我不是全职程序员,所以也许这样做有“问题”。如果您使用的是win7计算机,则需要管理员权限才能运行此脚本。这是需要管理员权限才能运行的fsutil。再次感谢LS_dev
PADOUT.BAT
@ECHO OFF
IF %2.==. GOTO :Syntax
IF NOT %3.==. GOTO :Syntax
SET /A _size=1*%2
del padding.txt
SET /A _Left=%_Size%-%~z1
fsutil file createnew %cd%\padding.txt %_Left%&&goto:eof
:Syntax
ECHO generates padding file to make file specific size
ECHO Syntax: PADOUT filepath size
GENERATE.BAT
del IMAGE\combined.srec
SET COMBINEDFILE= IMAGE\combined.srec
COPY INPUT\lwip_140_echo_server.elf.srec %COMBINEDFILE%
CALL PADOUT.BAT %COMBINEDFILE% 999424-1
COPY %COMBINEDFILE%+padding.txt+INPUT\MPDU1_Read.xap /b %COMBINEDFILE%
CALL PADOUT.BAT %COMBINEDFILE% 3997696-1
COPY %COMBINEDFILE%+padding.txt+INPUT\MPDU1_ReadTestPage.html %COMBINEDFILE%
CALL PADOUT.BAT %COMBINEDFILE% 4001536-1
COPY %COMBINEDFILE%+padding.txt+INPUT\Silverlight.js %COMBINEDFILE%
答案 1 :(得分:0)
我只知道在标准批处理中附加文件的方法,没有用于截断的文件。
如果不需要截断输入文件,可以添加它们并填充它们以填充空格。
为了实现这一点,您将需要1字节大小的填充文件(1.pad
)以及 - 为了提高性能 - 10,100,1000,10000和100000字节大小的填充文件。
PADFILE.BAT
- 用于填充文件的实用程序批处理:
@ECHO OFF
IF %2.==. GOTO :Syntax
IF NOT %3.==. GOTO :Syntax
SET /A _size=1*%2
:CheckSize
SET /A _Left=%_Size%-%~z1
IF %_Left% LSS 0 1>&2 ECHO File already bigger than size!&TYPE 2>NUL&GOTO :EOF
IF %_Left% == 0 GOTO :EOF
IF %_Left% GEQ 100000 TYPE 100000.PAD>>%1&&GOTO:CheckSize
IF %_Left% GEQ 10000 TYPE 10000.PAD>>%1&&GOTO:CheckSize
IF %_Left% GEQ 1000 TYPE 1000.PAD>>%1&&GOTO:CheckSize
IF %_Left% GEQ 100 TYPE 100.PAD>>%1&&GOTO:CheckSize
IF %_Left% GEQ 10 TYPE 10.PAD>>%1&&GOTO:CheckSize
TYPE 1.PAD>>%1
GOTO :CheckSize
:Syntax
ECHO Pads file until desired size.
ECHO Syntax: PADFILE filepath size
现在你的命令看起来像:
SET COMBINEDFILE=IMAGE/combined.srec
COPY INPUT/FILE1.srec %COMBINEDFILE%
PADFILE.BAT %COMBINEDFILE% 999424
COPY %COMBINEDFILE%+INPUT/FILE2.xap
PADFILE.BAT %COMBINEDFILE% 3997696
COPY %COMBINEDFILE%+INPUT/FILE3.html
PADFILE.BAT %COMBINEDFILE% 4001536
COPY %COMBINEDFILE%+INPUT/FILE4.js
请注意,至少1.PAD
应放在与PADFILE.BAT
相同的文件夹中。
要从.PAD
快速创建其他1.PAD
文件,您可以使用:
(FOR /L %I IN (1,1,10) DO @TYPE 1.PAD)>10.PAD
(FOR /L %I IN (1,1,10) DO @TYPE 10.PAD)>100.PAD
(FOR /L %I IN (1,1,10) DO @TYPE 100.PAD)>1000.PAD
(FOR /L %I IN (1,1,10) DO @TYPE 1000.PAD)>10000.PAD
(FOR /L %I IN (1,1,10) DO @TYPE 10000.PAD)>100000.PAD
答案 2 :(得分:0)
在LS_DE提供的批处理文件脚本的开头添加以下代码时。然后,除了此批处理文件外,您无需创建其他任何文件。如果文件已经创建。
此代码创建了长度为“空”的PAD文件。 我已经验证它可以正常工作。
fsutil file createnew %~dp01.PAD 1
fsutil file createnew %~dp010.PAD 10
fsutil file createnew %~dp0100.PAD 100
fsutil file createnew %~dp01000.PAD 1000
fsutil file createnew %~dp010000.PAD 10000
fsutil file createnew %~dp0100000.PAD 100000