1

ファイル内の 1 行を置き換える必要があります。通常、このコードは正常に機能します。

(このブロックが何をしているかについての実際の詳細は、この質問には必要ありません)。

for /F "tokens=1* delims=:" %%a in ('findstr /N "^" %DATA%') do (
    if %%a equ %TargetLine% (
        echo !insert!>>%filepath%cc.tmp
    ) else (
        if [%%b]==[] (echo.>>%filepath%cc.tmp) else (echo %%b>>%filepath%cc.tmp)
    )
)

残念ながら、各行は %%a に割り当てられます。これは、他の変数と同様に最大 8,192 文字しか格納できません (tidbid を提供してくれた dbenham に感謝します。現在使用されています)。

行が 8,192 文字 (この場合は 23,708 文字) を超える場合、どのようなオプションがありますか?

質問する前に: いいえ、新しい行に分割することはできません。これは、Base64 でエンコードされた 10k JSON 配列であり、ByteArray に書き込まれます。

進むべき道は正規表現を使用していると思いますが、これは正しい仮定ですか、それとも別の回避策がありますか?

ありがとう。

4

3 に答える 3

2

純粋なバッチでこれを解決できます!

:readLongLine
< longline.tmp (
    for /L %%n in (1 1 20) do set /p part[%%n]=
)

この後、行は変数に分割されますpart[1]..part[20]

これを使用できる新しいファイルに書き込む

:writeLongLine
<nul (
    for /L %%n in (1 1 19) do set /p ".=!part[%%n]!"
    (echo !part[20]!)
) > longLine2.tmp
于 2013-08-06T22:05:13.683 に答える