Board logo

标题: [文本处理] 批处理for命令skip不支持变量表示吗? [打印本页]

作者: wjrawlinson    时间: 2015-10-17 17:53     标题: 批处理for命令skip不支持变量表示吗?

for /f "skip=n" 如果n是变量,应该如何表示?
例如:

for /l %%i in (1,1,255) do (

for /f "skip=%%i" %%x in(abc.txy)   do (
.....
.....
)
)

如果我使用了变量延迟也不行
for /l %%i in (1,1,255) do (

set y=%%i

for /f "skip=!y!" %%x in(abc.txy)   do (
.....
.....
)
)
作者: CrLf    时间: 2015-10-17 18:53

for 和 if 比较特殊,他们的关键参数是不参与延迟扩展的(就是不能设为以 %%a 或 !var! 的形式动态解释的变量),所以 skip=%%i,并不会解析成 skip=n,但可以用 skip=%var%
作者: bailong360    时间: 2015-10-18 22:39

补充一下,还可以call出去然后用skip=%~1
作者: wjrawlinson    时间: 2015-10-19 07:54

回复 3# CrLf


   你好,我用了skip=%var%,例如skip=%i%,还是识别不了,是我写法有问题吗?
作者: wjrawlinson    时间: 2015-10-19 07:55

回复 4# bailong360


    你好,你能说的再明白一点吗,感谢
作者: pcl_test    时间: 2015-10-20 22:20

回复 6# wjrawlinson
  1. @echo off
  2. (for /l %%a in (1 1 6) do echo;%%a)>"%tmp%\$"
  3. set n=2
  4. for /f "skip=%n%" %%i in ('type "%tmp%\$"') do echo;%%i
  5. echo;
  6. setlocal enabledelayedexpansion
  7. for %%a in (3 4) do call :0 %%a
  8. pause&exit
  9. :0
  10. for /f "skip=%1" %%i in ('type "%tmp%\$"') do echo;%%i
  11. echo;
  12. goto :eof
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2