
批處理如何在循環中保存變量
遇到個奇怪的問題,把 @endlocal & call set flag_is_hex=%%flag_is_hex%% & rem )后面的& rem ) 語句去掉就正常了。但我不明白它為什么為跑到錯誤的分支。求大神解惑另外,似乎沒有辦法把 sum 原樣地保存到下一次循環,使用 %%sum%% 也會對 sum 里面的變量求值,如sum 里面有 %TEMP%, 這個值會被展開如何在循環中保存變量,對我來說一直是個難題。。。nclick="copycode($('code0'));">復制代碼
- :test_不要在endlocal & call set 后面加 & rem )
- @echo off
- set srcFile=a.reg
- set dstFile=b.reg
- type %~f0>%TEMP%$$$
- type nul>%dstFile%
- set flag_is_hex=0
- set sum=
- @setlocal DisableDelayedExpansion & rem (
- for /f delims= %%a in ('findstr /n .* %TEMP%$$$') do (
- set line=%%a
- @setlocal EnableDelayedExpansion & rem (
- set line=!line:*:=!
- @set line
- if not defined line (
- (echo;)>>%dstFile%
- ) else (
- @echo flag_is_hex1=!flag_is_hex!&pause
- if !flag_is_hex!==0 (
- @echo flag_is_hex2=!flag_is_hex!&pause
- set sum=!sum!!line!
- ) else (
- rem 預期不可能會跑到這里來,但實際很奇怪的跑到了這里
- @echo flag_is_hex3=!flag_is_hex!&pause
- )
- )
- @endlocal & call set flag_is_hex=%%flag_is_hex%% & call set sum=%%sum%% & rem )
- )
- @endlocal & rem )
- pause
- @goto :EOF

