标题: [文本处理] [已解决]批处理变量扩展的用法是什么? [打印本页]
作者: 领航者 时间: 2011-5-17 07:19 标题: [已解决]批处理变量扩展的用法是什么?
%a% 可以用 %a:~*,*% 来截取
1,其中*可不可以是其他的变量呢?
2,for do语句中的%%n能不能用这个方式呢?
希望知道的朋友多多解说一下
作者: mxxcgzxxx 时间: 2011-5-17 07:29
本帖最后由 mxxcgzxxx 于 2011-5-17 07:31 编辑
1、可以用别的变量来代替,不过要先开启扩展功能。而且格式要改变
如%b%=2 !a:~%b%,%b%! 就和 %a:~2,2% 是一样的
2、FOR中的用法也是相同的
for /l %%1 in (0,1,9) do echo !a:~%%1,1!
会逐个显示%a%中的前十个字符
可以查找相关函数嵌套的文章
作者: 领航者 时间: 2011-5-17 07:48
本帖最后由 领航者 于 2011-5-17 08:05 编辑
2# mxxcgzxxx
谢谢了 第一个问题明白了,
for /l %%1 in (0,1,9) do echo !a:~%%1,1!
后面的!a:~%%l,1! 这个a是什么意思?
我这第二个问题是想要处理%%i,而不是%a%,可能我问题提问的不明确.
%%i可以扩展吗?
作者: hanyeguxing 时间: 2011-5-17 12:25
%%i这样的变量不能,但可以使用 如set a=%%i后,对变量a这样操作
作者: applba 时间: 2011-5-17 15:05
本帖最后由 applba 于 2011-5-18 00:04 编辑
在没有开启变量延迟时,你无法在%a:~*,*%里面使用%,肯定会冲突。
开启变量延迟后,!a:~*,*!里面使用%是不会发生冲突的。
只有环境变量的引用(%a%,!a!)才能能进行 %a:~1,1% 和 !a:str1=str2! 形式的增强。
参数变量(%0~%9)和循环变量(%i、%%i)的引用不能直接这样增强,需要通过环境变量中转。
即4楼所说的set a=%n 、set a=%%i。
参数变量和循环变量的引用支持另一种形式的增强:
如果他们的值是合法的路径或文件名,可以对他们进行扩充,比如%~f0,%%~dpi。
环境变量的引用(%a%,!a!)是不支持这样增强的。
作者: Hello123World 时间: 2011-5-17 16:21
直接的引用,必须加上变量延迟!- @echo off
- setlocal EnableDElayedExpansion
- set a=1
- set b=2
- set c=helloworld
- echo !c:~%a%,%b%!
- for /l %%i in (0 1 4) do echo !c:~%%i,1!
- pause>nul
复制代码
作者: 领航者 时间: 2011-5-17 19:30
谢谢大家了,学了不少
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |