Board logo

标题: [其他] 批处理for命令中可以使用变量扩展吗? [打印本页]

作者: BS0小陈    时间: 2011-6-16 12:44     标题: 批处理for命令中可以使用变量扩展吗?

在for中:
set b=%%a
set c=!b:~12!
这个可以不可以简单一些啊?
像:
set b=%%:~12 (当然了这个不对)
作者: CrLf    时间: 2011-6-16 12:57

不行,因为参数变量是被cmd当成文件看待,而我们平时设置的变量却是字符串,两者虽可相互转换,但语法不能互相套用
作者: applba    时间: 2011-6-16 13:06

2# zm900612


很新鲜的看法,头一次听说
作者: applba    时间: 2011-6-16 13:07

1# BS0小陈


很基本的概念,一个的环境变量,一个循环变量,怎么能混为一谈?
作者: CrLf    时间: 2011-6-16 13:12

3# applba

只是个人看法,没有权威性。

这里说的不是变量的属性,而是试图从cmd设计者的角度来描述二者的区别,%%a的所有扩展用法都是针对文件的,而%str%的所有用法都是针对字符串的,所以我这么说,不过好像用词不当产生了歧义。
作者: Hello123World    时间: 2011-6-16 17:27

本帖最后由 Hello123World 于 2011-6-16 17:29 编辑

%%a的所有扩展用法都是针对文件的,这话并不完全正确, 至少%~I          - 删除任何引号("),扩展 %I,这个不是。
不过说%%a的扩展是针对文件的这种说法确实让我很以为然,因为除了上面这一个(这个只是牵涉到可以处理字符串),其它的都是为处理文件而存在的。
作者: tmplinshi    时间: 2011-6-16 18:15

本帖最后由 tmplinshi 于 2011-6-16 18:17 编辑
%%a的所有扩展用法都是针对文件的


不是有 FOR /F ["options"] %variable IN ("string") DO command [command-parameters] 吗?
作者: qzwqzw    时间: 2011-6-16 19:50

楼上和再楼上的两位讨论的不是一回事
他们讨论的是for变量的替换修饰符主要针对文件做了增强
而不是说for变量扩展的都是文件对象




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2