setlocal EnableDelayedExpansion
set m=0
for /f "tokens=*" %%m in ('findstr /v /C:"730 730" cover.ps') do (
if !m! == 686 (pause) else (echo %%m >>cover3.txt)
set /a m=!m! + 1
)
paus
exit
这是kcdsw兄弟写的一个批处理 他自己说有以下问题
如果使用set 再echo 那么文本中的%会被替换掉.
如果使用call,而不启用变量延迟,将for的%%m传递给call的时候同样会丢失东西
所以我还是启用了变量延迟,所造成的结果就是! 都不见了 希望高手赐教
我想先暂且不论这些问题
想请高手 依据这个例子 解释下变量延迟 是怎么个延迟法 为什么要延迟
我从上面的“如果使用call,而不启用变量延迟,将for的%%m传递给call的时候同样会丢失东西”这句话 猜想 是因为两个段之间传递不了参数 而使用变量延迟 网上查了好多也没有完全理解 变量延迟 所以想请高手着重讲下
[ Last edited by yuanzijia08 on 2006-11-4 at 02:31 PM ]
set m=0
for /f "tokens=*" %%m in ('findstr /v /C:"730 730" cover.ps') do (
if !m! == 686 (pause) else (echo %%m >>cover3.txt)
set /a m=!m! + 1
)
paus
exit
这是kcdsw兄弟写的一个批处理 他自己说有以下问题
如果使用set 再echo 那么文本中的%会被替换掉.
如果使用call,而不启用变量延迟,将for的%%m传递给call的时候同样会丢失东西
所以我还是启用了变量延迟,所造成的结果就是! 都不见了 希望高手赐教
我想先暂且不论这些问题
想请高手 依据这个例子 解释下变量延迟 是怎么个延迟法 为什么要延迟
我从上面的“如果使用call,而不启用变量延迟,将for的%%m传递给call的时候同样会丢失东西”这句话 猜想 是因为两个段之间传递不了参数 而使用变量延迟 网上查了好多也没有完全理解 变量延迟 所以想请高手着重讲下
[ Last edited by yuanzijia08 on 2006-11-4 at 02:31 PM ]
