![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 15:07 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 【擂台大挑战】替换*=为指定字符的bat代码 |
| 可打印版本 4,206 / 31 |
| 第1楼 plp626 | 发表于 2009-10-12 18:59 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
【擂台大挑战】替换*=为指定字符的bat代码 在bat中
goto,call语句是确实比较耗时;http://bbs.bathome.cn/thread-5993-1-1.html 若*,=的替换问题解决了 几乎可将所有代码的goto循环转换为for循环,这样能大大节约运行时间 现在征集最简洁最快速的代码,【当然不能含有goto或call命令了】 测试字符串:*/*\**,.=*,...=///&+wodfdfd**==...***************==========... 将*替换为星星 将=替换为等号 有挑战者请上擂台。。。, [ Last edited by plp626 on 2009-10-12 at 19:32 ] |
|
| 第2楼 plp626 | 发表于 2009-10-12 19:20 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
我想问下,除了if 逐一判断字符,难道真的就没有直接set 替换的方法了么?
岂有此理,真没了么?大家对预处理了解多少,对^!%的利用充分吗? |
|
| 第3楼 plp626 | 发表于 2009-10-12 19:31 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
谁能解决,我以后在论坛称谁为
|
|
| 第4楼 netbenton | 发表于 2009-10-12 19:33 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
| 第5楼 plp626 | 发表于 2009-10-12 19:40 |
| 银牌会员 发帖 1,020 积分 2,278 | |
Originally posted by netbenton at 2009-10-12 07:33 PM: |
|
| 第6楼 netbenton | 发表于 2009-10-12 19:50 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
楼应是想解决如何把*和=作为参数传递给变量函数吗?
如果是的话,可以存到变量,再以变量名方式传递给函数就可以了, 在函数里面用 for /f "tokens=? delims=?" %%a in .... 来解释,就可以解决任何字符的问题了 |
|
| 第7楼 plp626 | 发表于 2009-10-12 19:54 |
| 银牌会员 发帖 1,020 积分 2,278 | |
Originally posted by netbenton at 2009-10-12 07:50 PM: 不是,不是,这点我肯定。 |
|
| 第8楼 plp626 | 发表于 2009-10-12 20:03 |
| 银牌会员 发帖 1,020 积分 2,278 | |
Originally posted by netbenton at 2009-10-12 07:50 PM: 我拿个简单的例子,只是为了好理解啊: 在你写的那些游戏代码 有N多set,当然你一行一个一个set那样为了可读性强,【再说也没必要追求什么速度】 如果想使代码简洁,用for: 这样当然可以 可是如果出现一个 set zz=** 你这样 就不行了,// *?在for %%a 被解释为通配符了, //如果你再采用迂回的办法,先将**放到变量里,然后再上面for,经过两次替换,也可以,不过比较麻烦,而且又会出现一些替换问题要解决,而且这是你事先已经知道zz变量要被赋予**值,而在很多代码中,被赋予的值是未知的,还有,当接受命令行的操作时,这种迂回的方法基本作废了 关于这些例子,我举的是个较简单的一个,对于高级复杂用法,都涉及*,=,~,的替换问题 [ Last edited by plp626 on 2009-10-12 at 20:22 ] |
|
| 第9楼 netbenton | 发表于 2009-10-12 20:31 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
先不考虑简洁,前几天看到一位前辈的方法,可以解决8楼问题
|
|
| 第10楼 523066680 | 发表于 2009-10-12 20:49 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
一看楼主就知道不是为了调用参数拉~ 上次他说*号替换对计算处理很有用
而且,大部分时候调用参数的内容,那也是俺们自己设置的,哪来的这些东东 俺看中的仅仅是cmd的输入输出模式 if wscript.arguments.count=0 then createobject("wscript.shell").run _ "cmd /c cscript " &chr(34) &wscript.scriptname &chr(34) & " isme &pause" wscript.quit end if str=("测试字符串:*/*\**,.=*,...=///&+w%%fdfd**==...1*2!34%5='..") str=replace(str,"*","星") wscript.echo str wscript.quit [ Last edited by 523066680 on 2009-10-12 at 21:01 ] |
|
| 第11楼 plp626 | 发表于 2009-10-13 11:13 |
| 银牌会员 发帖 1,020 积分 2,278 | |
Originally posted by netbenton at 2009-10-12 08:31 PM: 好了,回归本帖讨论 |
|
| 第12楼 netbenton | 发表于 2009-10-13 12:19 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
看看这个方法怎样?
如果只是一次定义,总变量"a"还可以与子变量同名,可以释放"a"变量占用的空间 [ Last edited by netbenton on 2009-10-13 at 10:22 ] |
|
| 第13楼 plp | 发表于 2009-10-13 12:26 |
| 新手上路 发帖 4 积分 3 | |
Originally posted by netbenton at 2009-10-13 12:19 PM: |
|
| 第14楼 plp | 发表于 2009-10-13 12:28 |
| 新手上路 发帖 4 积分 3 | |
一个时间单位相当于1个"set var=0"语句所耗费的时间【详情点击此】 写那么多注释也没人看,如果没有一招致死的代码,下面算是比较简洁的方案 [ Last edited by plp on 2009-10-14 at 10:50 ] |
|
| 第15楼 523066680 | 发表于 2009-10-13 12:29 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
我做旁观了哦~ ,
对了netbenton,汇编能否做字符处理,可以的话,应该不错的吧。(想像不到,完全不懂……) 现在这个帖子下包括我这个旁观的,也就3个人哦~ 其他高人在酝酿什么呢? 哇……plp来帖这么快,我都没看到就灌了水了。verywell。。。 [ Last edited by 523066680 on 2009-10-13 at 12:35 ] |
|
| 1 2 3 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |