标题: [文本处理] [求助]set的替换字符功能怎么用? [打印本页]
作者: kingerpk 时间: 2009-2-4 00:56 标题: [求助]set的替换字符功能怎么用?
我为了练习for写了这么一句
- for %%a in (a123,a465,a789) do (
- set b=%%a
- set c=%b:a=a被替换%
- echo %C%
- )
- pause
复制代码
但是最后输出的%c%是空的。
我认为是变量延时的问题就改成这样:
- setlocal enabledelayedexpansion
- for !!a in (a123,a465,a789) do (set b=!!a
- set c=!b:a=a被替换!
- echo !C!
- )
- pause
复制代码
但结果使我更无奈:批处窗口一闪而过~~~~~失败~~~~~~
为什么会这样啊?
还请大家指点指点!!!!
作者: zcy85611 时间: 2009-2-4 09:51
原帖由 kingerpk 于 2009-2-4 00:56 发表
我为了练习for写了这么一句
for %%a in (a123,a465,a789) do (
set b=%%a
set c=%b:a=a被替换%
echo %C%
)
pause
但是最后输出的%c%是空的。
我认为是变量延时的问题就改成这样:
setlocal enabledelayedex ...
在第一段代码里,楼主没有使用延迟变量,具体的你可以看这几篇帖子,里面讲的很详细
什么是延迟环境变量扩展?
http://bbs.bathome.net/thread-3083-1-1.html
变量延迟详解
http://bbs.bathome.net/thread-2898-1-1.html
什么情况下该使用变量延迟
http://bbs.bathome.net/thread-2899-1-1.html
一个变量嵌套变量的问题
http://bbs.bathome.net/thread-2900-1-1.html
什么时候使用延迟变量?为什么要使用?
http://bbs.bathome.net/viewthread.php?tid=112
延迟变量通俗解释
http://bbs.bathome.net/viewthread.php?tid=354
而在第二个代码里,楼主把for的参数%%a中的%也替换成!!了,for的参数的%%是不用替换成!!的
第二段代码正确的写法应该是
- setlocal enabledelayedexpansion
- for %%a in (a123,a465,a789) do (
- set b=%%a
- set c=!b:a=a被替换!
- echo !C!
- )
- pause
复制代码
碰到批处理窗口一闪而过的情况,楼主可以试试先在开始的运行里运行cmd,然后到相应的路径里去运行批处理程序,这样窗口就不会一闪而过了,而且会提示你批处理哪里出了问题。
作者: defanive 时间: 2009-2-4 12:43
LS的要知道哪里出错了,用我那个批处理测试器不就好了么,运行完自动把出错日志给你看。。。
作者: wxcute 时间: 2009-2-4 13:08
for 的变量没有 !!a 这种用法,只能用百分号。
for %%a in () do ()
作者: kingerpk 时间: 2009-2-4 15:14
原帖由 defanive 于 2009-2-4 12:43 发表
LS的要知道哪里出错了,用我那个批处理测试器不就好了么,运行完自动把出错日志给你看。。。
对啊 !!!!
有没有在批处命令写错时,使窗口不要关掉并输出错误信息的命令啊 ??????
不然对新手来说,一出错就把窗口关掉,连怎么回事都不知道,真的很麻烦~~~~~
作者: denev2004 时间: 2009-2-4 15:31 标题: 回复 5楼 的帖子
放在cmd里运行就可以了,我从来都在里面运行. . .
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |