中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-23 22:08
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,274 会员排行
DOS批处理 & 脚本技术(批处理室) » [讨论]********findstr/a之用法质疑********
可打印版本  5,347 / 23
第16楼 vkill 发表于 2007-11-27 21:05
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
0401 的代码中精简的?
第17楼 s11ss 发表于 2007-11-27 21:25
银牌会员 发帖 566 积分 2,098
Originally posted by everest79 at 2007-11-27 08:54 PM:
我也写过个
SETLOCAL ENABLEDELAYEDEXPANSION
IF %1 GTR 2099999999 (GOTO :EOF)
SET VAR=0123456789ABCDEF
FOR /L %%i IN (0,1,15) DO (
SET H%%i=!VAR:~%%i,1!)
SET HH=1&SET KK=0&SET TT=% ...

有限制啊,最多只能转换为10位16进制数(不算前两个0),但好像已经够用了。
第18楼 zh159 发表于 2007-11-27 23:53
金牌会员 发帖 1,467 积分 3,687
Originally posted by s11ss at 2007-11-27 20:51:
zh159兄,你的转换多位的代码与我的代码相比也不见得不啰嗦啊~~~~~~~~
不好意思,我收回这句话。
其实各有优缺点。
你的简单但降低了代码可读性而且加大了“程序处理量”(0-9都替换了),我的啰嗦但提高了代码可读性。

在“程序处理量”方面,你的处理量应该更大:
call set r=%%r:10=A%%
call set r=%%r:11=B%%
call set r=%%r:12=C%%
call set r=%%r:13=D%%
call set r=%%r:14=E%%
call set r=%%r:15=F%%
call set r%1=%r%%%r%1%%

这部分也是一个替换过程,每次转换都要历经六次替换,0-9的数据也会一样处理,只不过0-9里面没有“10-15”数字,不会替换出A-F;
我那个简化的(原出处应该是不得不爱版主)虽然降低了代码可读性,但只要一次过替换(实际上是字符截取),效率高些

其实只要对比一下就可以发现相同的地方

:10to16
set/a q=%1
:1c
set/a r=%q%%%16
set/a q=%q%/16
call set r=%%r:10=A%%
call set r=%%r:11=B%%
call set r=%%r:12=C%%
call set r=%%r:13=D%%
call set r=%%r:14=E%%
call set r=%%r:15=F%%

call set r%1=%r%%%r%1%%
if not %q% equ 0 goto :1c
call set r=%%r%1%%


:10to16
set H=0123456789ABCDEF
set/a q=%1
:1c
set/a r=%q%%%16
set/a q=%q%/16
call set r=%%H:~%r%,1%%
call set r%1=%r%%%r%1%%
if not %q% equ 0 goto :1c
call set r=%%r%1%%
第19楼 fastslz 发表于 2007-11-28 00:32
铂金会员 发帖 2,315 积分 5,493 来自 上海
iexplore about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>不能播放Midi可能缺少VB6控件吧
下载详细信息: Microsoft Visual Basic 6.0 公共控件
http://www.microsoft.com/downloads/details.aspx?familyid=25437D98-51D0-41C1-BB14-64662F5F62FE&displaylang=zh-cn
第20楼 s11ss 发表于 2007-11-28 13:03
银牌会员 发帖 566 积分 2,098
zh159兄言之有理,我又说错话了,确实我的代码要差些。改之!
第21楼 electronixtar 发表于 2007-12-02 17:31
铂金会员 发帖 2,672 积分 7,493
Originally posted by fastslz at 2007-11-28 00:32:
iexplore about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>不能播放Midi可能缺少VB6控件吧
下载详细信息: Microsoft Visual Bas ...

不是VB库

是Office自带的 VBA, Visual Basic for Applications

vbe6.dll 是VB编辑器的一个dll。

其实我签名里彩蛋在VB6也有,一样的。
第22楼 knoppix7 发表于 2007-12-02 17:57
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
咳,是不是跑题了.
第23楼 wjmm 发表于 2008-06-27 10:45
初级用户 发帖 19 积分 48
没看懂
第24楼 87zrjojo 发表于 2026-06-26 16:24
新手上路 发帖 4 积分 11
Originally posted by zh159 at 2007-11-27 20:07:
现在10to16不用这么罗嗦了,如果只转换一位(0~f),用下面的就OK

转换多位的:


[ Last edited by zh159 on 2007-11-27 at 08:09 PM ]


原来批处理还可以这么用,我学着自己改了下:
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023