找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27958|回复: 5

[文本处理] 批处理for命令skip不支持变量表示吗?

[复制链接]
发表于 2015-10-17 17:53:26 | 显示全部楼层 |阅读模式
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 (
.....
.....
)
)
发表于 2015-10-17 18:53:25 | 显示全部楼层
for 和 if 比较特殊,他们的关键参数是不参与延迟扩展的(就是不能设为以 %%a 或 !var! 的形式动态解释的变量),所以 skip=%%i,并不会解析成 skip=n,但可以用 skip=%var%
发表于 2015-10-18 22:39:12 | 显示全部楼层
补充一下,还可以call出去然后用skip=%~1
 楼主| 发表于 2015-10-19 07:54:29 | 显示全部楼层
回复 3# CrLf


   你好,我用了skip=%var%,例如skip=%i%,还是识别不了,是我写法有问题吗?
 楼主| 发表于 2015-10-19 07:55:22 | 显示全部楼层
回复 4# bailong360


    你好,你能说的再明白一点吗,感谢
发表于 2015-10-20 22:20:16 | 显示全部楼层
回复 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 14:38 , Processed in 0.010691 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表