3番目のforループとそれをサポートするコードを既存のコードに統合しようとすると、理解の限界に達しました。この複雑な「EnableDelayedExpansion」環境でさまざまな変数を参照する方法に完全に迷っています。
さらに、「EnableDelayedExpansion」/ endlocalは、各Forループでオン/オフにするか、プログラムの開始と終了で1回だけオン/オフにする必要があります。
:: ------------------ Beg For #1
For /L %%a in (%XBEG%,1,%XEND%) do (
cls
echo : %%a
set L=1
:: ------------------ Beg For #2
For /F "delims=" %%b in (%XDRV%%XPATH%%%a\1dir%%a.txt) do (
set XTITLE=%%b
echo Line !L!: !XTITLE!
If not {!XTITLE!}=={!XTITLE:%XDRV%%XPATH%%%a\!} set XTITLE=!XTITLE:~18,-4!
::
:: ------------------ Beg For #3 --- New code
:: Write title to the xtemp file. Place the redirection
:: symbol, i.e., greater than sign, IMMEDIATELY after vari
:: to avoid a trailing space, i.e., ( %vari%> )
echo !XTITLE!> %XDRV%%XPATH%xtemp.txt
:: Get the file size in bytes, each byte = one character
For %%c in (%XDRV%%XPATH%xtemp.txt) do set /a XLEN=%%~zc
:: Subtract 2 bytes, 1 for CR, 1 for LF, from Length
set /a XLEN -=2
cls
echo : ===[ Debug ]======================================
echo - !XTITLE! - has !XLEN! characters.
set /a XPAD=50-!XLEN!
echo - Xpad is !XPAD!
:: Build the Index entry
set XENTRY=%XPADs%%XTITLE%%XPAD%%%a
echo - %XENTRY%
pause
:: remove the xtemp file
del %XDRV%%XPATH%xtemp.txt
set /a L=!L!+1
pause
:: ------------------ end of New code
):: End For #2
)
:: End For #1
:: Clean Up For3
set XTITLE=
set L=
Goto DOS
「EnableDelayedExpansion」/endlocalは現在、プログラムの開始と終了に配置されています。
あなたの助けが切実に必要であり、非常に高く評価されるので、この状況がコミュニティにとって十分な関心を持っていることを願っています。