无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 2805|回复: 2
打印 上一主题 下一主题

[已解决] 请帮我修改一下查找子串在另一字串中位置的grub4dos批处理

[复制链接]
跳转到指定楼层
1#
发表于 2014-1-17 22:44:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qj_tzy 于 2014-1-18 13:20 编辑

请帮我修改一下查找子串在另一字串中位置的grub4dos批处理

若子串值、另一字串值已赋给变量substr、instr,现查找substr是否在instr中(不区分大小写),若在则返回所在位置,若不在则返回0。
我写了以下批处理,但未调试通过,诚请各位网友帮我修改一下,谢谢!

!BAT
set /l instr=%1
set l_instr=%@retval%
set /l substr=%2
set l_substr=%@retval%
set site=0

:loop
call echo %^instr:~%site%,%l_substr%%% | set strtemp=
set /a site=%site%+1 > nul
if "%substr%"=="%strtemp%" exit
if "%site%"<=%l_instr% goto :loop

:eof
2#
发表于 2014-1-18 08:17:37 | 只看该作者
可以直接使用cat命令
set instr=abcdddddfffadsf
set str_len=%@retval%
set substr=cd
write (md)0x200+1 %instr%
cat --locatei=%substr% --number=1 (md)0x200+1,%str_len% | set site=

最终的site变量就是你所需要的位置,如果该变量为空就是没有找到.

点评

谢谢,这样太简捷了,没想到把主串值写入内存、再用cat 命令来查找的方法,只想到用cat来查找文件中的内容了。  详情 回复 发表于 2014-1-18 13:13
回复

使用道具 举报

3#
 楼主| 发表于 2014-1-18 13:13:03 | 只看该作者
chenall 发表于 2014-1-18 08:17
可以直接使用cat命令
set instr=abcdddddfffadsf
set str_len=%@retval%

谢谢,这样太简捷了,没想到把主串值写入内存、再用cat 命令来查找的方法,只想到用cat来查找文件中的内容了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-13 14:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表