2 つのコードがありますが、part5 が part4 とは別のファイルで間違った変数を取得しています。
part4 は var4 を使用しており、part5 は var5 を使用しています。var5 を 2 行下の "skip=2 tokens=2 delims==" で取得したいのですが、なぜか part5 で findstr を参照するときに行をスキップできません。変更する必要があるのはパート 5 だけです。パート 4 は問題ありません。
つまり、本質的に、part4のfindstrの2行下の変数をpart5に取得するにはどうすればよいですか?
SETLOCAL ENABLEDELAYEDEXPANSION
:part4
set var4=
findstr /m "Ship sunk!" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\*.clg" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\Log_*.cfg"
if not errorlevel 1 (
for /f "tokens=4 delims==,|" %%D in ('findstr "Ship sunk!" "C:\Users\P Ditty\Documents\SH3 \data\cfg\Backups_SCR2\*.clg" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\Log_*.cfg"') do (
set var4=!var4!%%D
goto :eof
)
)
:part5
findstr "Ship sunk!" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\*.clg" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\Log_*.cfg"
if not errorlevel 1 (
for /f "skip=2 tokens=2 delims==" %%E in ('findstr "Ship sunk!" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\*.clg" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR2\Log_*.cfg"') do (
set var5=
set var5=!var5!%%E
goto :eof
)
)
例:
part4 見つけたら「沈没船!」このファイルで (Ship sunk! は最初の行にあります):
asdfasfdasdfShip sunk! asdfjaslkjf;ajfa;
aksdfjklasjflk; fnwerawra
Date=19400112
part5は19400112("Date="の次の3行目)の変数にしてほしいです。part4 変数の 2 行下の "Date=" より後の部分