私は Perl プログラマですが、特定のタスクのために Windows バッチ ファイルを作成する必要があります。
スクリプトは、入力ファイルを 1 行ずつ読み取り、出力ファイルにコピーする必要があります。ただし、途中で出力ファイルを切り替える必要があります。
一般的に、入力ファイルの読み取りとファイルへの出力については、Jeb による次の記事のソリューションが最適に機能するようです。(入力データに変な文字や長い行が含まれている場合、他のソリューションはうまく機能しません)バッチ ファイル: ファイルの読み取り方法は?
ただし、途中で出力ファイルを変更すると機能しません。問題はおそらく DelayedExpansion の動作方法にあります。
次のスクリプトを実行すると、最後の outfile はまだ a.txt であり、new_variable は設定されていません。
@echo off
del /f/q a.txt
del /f/q b.txt
del /f/q c.txt
del /f/q out.txt
set outfile=a.txt
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ in.txt"`) do (
set "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
IF "!%var!" == "/************************** PLUGINS SECTION *************************/" (
set outfile=b.txt
set new_variable=this
echo "FOUND! Value of outfile should change to b.txt"
)
echo( !outfile! !var! >>!outfile!
ENDLOCAL
)
echo Outfile: %outfile%
echo New Variable: %new_variable%