Board logo

标题: [文本处理] [求助]set的替换字符功能怎么用? [打印本页]

作者: kingerpk    时间: 2009-2-4 00:56     标题: [求助]set的替换字符功能怎么用?

我为了练习for写了这么一句
  1. for %%a in (a123,a465,a789) do (
  2. set b=%%a
  3. set c=%b:a=a被替换%
  4. echo %C%
  5. )
  6. pause
复制代码

但是最后输出的%c%是空的。
我认为是变量延时的问题就改成这样:
  1. setlocal enabledelayedexpansion
  2. for !!a in (a123,a465,a789) do (set b=!!a
  3. set c=!b:a=a被替换!
  4. echo !C!
  5. )
  6. 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的参数的%%是不用替换成!!的
第二段代码正确的写法应该是
  1. setlocal enabledelayedexpansion
  2. for %%a in (a123,a465,a789) do (
  3. set b=%%a
  4. set c=!b:a=a被替换!
  5. echo !C!
  6. )
  7. 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://bbs.bathome.net/) Powered by Discuz! 7.2