[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理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 (
.....
.....
)
)

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

TOP

补充一下,还可以call出去然后用skip=%~1

TOP

回复 3# CrLf


   你好,我用了skip=%var%,例如skip=%i%,还是识别不了,是我写法有问题吗?

TOP

回复 4# bailong360


    你好,你能说的再明白一点吗,感谢

TOP

回复 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
复制代码

TOP

返回列表