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

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

[复制链接]
发表于 2014-6-4 14:37:06 | 显示全部楼层 |阅读模式
本帖最后由 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赋值给一个临时变量,从而采用第一种偏移量的方式,但是没成功,求大神指点。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-6-4 14:58:55 | 显示全部楼层
我这里测试没有问题

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

c:\>echo %n:~2%
cde
 楼主| 发表于 2014-6-4 15:00:26 | 显示全部楼层
回复 2# DAIC

哦,其实我的意思是在for循环里面,就是在 %i 本身这个地方进行偏移量设置,如果用%i%的形式,那就是我上面提到的第一种了。
 楼主| 发表于 2014-6-4 15:04:51 | 显示全部楼层
本帖最后由 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的。
发表于 2014-6-4 15:08:10 | 显示全部楼层
回复 3# vmzlv


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

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-6-4 15:30:49 | 显示全部楼层
回复 5# DAIC


    学习了,谢谢, 这bat写的真是又爱又恨啊、
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 05:26 , Processed in 0.031642 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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