[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理获取字符串中某一字符出现的位置

本帖最后由 踏沙行 于 2018-8-30 05:15 编辑

不使用第三方命令,怎么获取革个字符串在字符中先后出现的位置呢?
下面是我的代码,但是一运行就闪退,很可能是变量嵌套的问题,求大神修正,谢谢。(头痛的问题,每次遇到都胆怯)
  1. rem 获取变量MO代表的字符串中,字符"D"先后出现的位置
  2. @echo off
  3. Setlocal enabledelayedexpansion
  4. set "MO=ABCDEFGDE"
  5. set/a "o=0"
  6. :Loop
  7. if not "%MO:~!o!,1%"=="" (
  8. if not "%MO:~!o!,1%"=="D" (
  9. set/a o+=1 &goto Loop ) else (
  10. set "@o=o" )
  11. )
  12. set @
复制代码

MO=ABCDEFGDE
以这个字符串为例,你希望得到的结果是什么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher 其中的“D”出现几次,分别在什么位置?

TOP

按你的方法
  1. @echo off
  2. set "MO=ABCDEFGDEADKEFDCFKSEDFASDFGHETYUERTYSDFGHJZXCVBASDFGERSDD"
  3. set /a n=-1
  4. set/p=出现 D 的各个位置: <nul
  5. :LOOP
  6. set /a n=%n%+1 & set /a n1=%n%+2
  7. call set "STR=%%MO:~%n%,1%%"
  8. if defined STR (if "%STR%" == "D" (set/p=%n1% <nul &set /a m=%m%+1)
  9.    goto LOOP)
  10. echo;&echo;
  11. echo 共出现 %m% 次 D
  12. echo;&pause
复制代码
=================

TOP

返回列表