私はこのスクリプトを持っています:
setlocal EnableDelayedExpansion
set SECTION=dispid 3
set TARGET=pushscope
@echo on
for /F "tokens=1* delims=:" %%a in ('findstr /N /C:"%SECTION%" /C:"%TARGET%" %CHECKER%') do (
if not defined StartSection (
if not %%b==%%b:%SECTION%=% set StartSection=%%a
) else (
goto :EOF
if not defined TargetLine (
goto :EOF :: Do nothing yet
if not %%b equ !%%b:%TARGET%=! set TargetLine=%%a& goto checkercont
)
)
)
StartSection (問題領域) で、検索と置換を実行して、この行が目的の行であることを確認し、その行番号を保存しようとしています。
変数を正しく解析し、検索と置換を適切に行うにはどうすればよいですか?
私が試したこと。"[%b]" は、置換された %%b を意味します:
%%b:%SECTION%=% returns "[%b]:dispid 3=a" (Yes, it somehow gives me an 'a').
!%b:%SECTION%=! returns "!SECTIONa"
!%%b:%SECTION%=! returns "![%b]:dispid 3=!" (which then gives me an error saying 3 is not a command)
!%b:%SECTION%=%! returns "!SECTION!"
!%%b:!SECTION!=! returns "![%b]:!SECTION!=!"
%b:%%SECTION%%=% return "dispid 3" (and error)
最後の例では、太字を解析してから斜体を解析するような気がします。%b:%%セクション%%=% そして ! を使用して 私に少なくとも1つを表示する以外は何も達成していないようです。
そして、はい、少しすると、そこにランダムながらくたを投げ始めました(イライラしました)。
では、これを機能させる適切な方法は何ですか?
ありがとう