1

Windows バッチ ファイルを使用して複数のファイルを連結し、ファイルの 1 つのイメージを作成しようとしています。今、これはコピー「copy file1 + file2 + file3 + file4 FileConcat」を使用して実行できることがわかりましたが、私がやりたいのは、file1 @バイトアドレス00を開始し、次にfile2 @バイトアドレス999424を開始し、file3 @バイトアドレスを開始することです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

助けてくれてありがとう

4

3 に答える 3

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%
于 2013-10-09T09:40:37.360 に答える
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
于 2013-10-08T13:14:46.727 に答える