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

[文件操作] [已解决]批处理命令for循环的参数如何使用偏移量?

本帖最后由 vmzlv 于 2014-6-4 22:52 编辑

对于变量,可以设置偏移量来截取其中的部分,如
  1. set ppp=abced
  2. echo %ppp:~2%
复制代码
得到的结果是 cde

那么在for循环中,参数如何设置偏移量呢,如
  1. for /f %i in ("abcde") do @echo %i
复制代码
此时变量 i 该如何截断呢?

这里只是举个例子所以for里面的字符只有abcde,我试过在for循环里面将i赋值给一个临时变量,从而采用第一种偏移量的方式,但是没成功,求大神指点。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

我这里测试没有问题

c:\>for /f %i in ("abcde") do @set n=%i

c:\>echo %n:~2%
cde

TOP

回复 2# DAIC

哦,其实我的意思是在for循环里面,就是在 %i 本身这个地方进行偏移量设置,如果用%i%的形式,那就是我上面提到的第一种了。

TOP

本帖最后由 vmzlv 于 2014-6-4 15:14 编辑
对于变量,可以设置偏移量来截取其中的部分,如得到的结果是 cde

那么在for循环中,参数如何设置偏移量呢 ...
vmzlv 发表于 2014-6-4 14:37


唉,真是学艺不精啊,有解了。
PS,这是第一个在BH发帖咨询后自己解决的问题,内牛满面啊,
   
cmd的 setlocal enabledelayedexpansion 是关键,即启用延迟的环境变量扩展

启用后,用!代替 %来引用变量,例如在上面的for循环里面,do 后面的操作是 set ppp=%i;
这个时候如果紧跟echo  %ppp% 的话是无效的,用echo !ppp! 就成功了,echo !ppp:~2!也是OK的。

TOP

回复 3# vmzlv


    for循环的控制变量%i是不能直接截取的,只能赋值给另一个临时变量再截取
1

评分人数

TOP

回复 5# DAIC


    学习了,谢谢, 这bat写的真是又爱又恨啊、

TOP

返回列表