[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
直接用就行.
  1. @echo off&setlocal enabledelayedexpansion
  2. set aaa=1
  3. set bb=2
  4. for /f "skip=%aaa% tokens=%bb%" %%i in (test.txt) do echo %%i
  5. pause
复制代码

TOP

开变量延迟是个习惯,不过举得例子比较简单,不需要变量延迟,普通变量就可以用了。不过实际情况还是需要用到变量延迟的,lz自行修改一下便可。

TOP

回复 5楼 的帖子

此时你的第2个for是套嵌在第一个for内,属于复合语句,你代码中的变量n是在复合语句中被赋值,所以在这里你必须要用变量延迟,也就是!n!。我之前所举得例子不属于复合语句,所以没必要用变量延迟。

TOP

尝试了N次,才发现for里面参数如果使用变量延迟就出现错误,只支持%n%等普通变量。解决办法就是把赋值语句不放在复合语句中便可。

[ 本帖最后由 TX_kakashi 于 2010-9-16 22:09 编辑 ]

TOP

我已经把set拿出来call了,似乎程序已然不认识%n%啊,只认!n!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l  %%a in (1,1,10) do (
  4.      call :_set
  5.      echo !n!
  6.      echo %n%
  7.      pause
  8.      for /f "delims=~ skip=!n!" %%i in (1.txt) do (echo %%i)
  9. )
  10. pause
  11. :_set
  12. set/a n=%random%%%3
  13. exit/b
复制代码

TOP

回复 13楼 的帖子

使用参数变量,这个方法很巧妙啊

TOP

返回列表