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

[文本处理] [已解决]如何截取字符串中指定字符之前的几个/多个字符?

本帖最后由 pcl_test 于 2017-3-24 09:18 编辑

比如说变量N的值是123456789555115Aafdsafasfasfafafafawef
大写字母A的前后有多少个字符是不确定的,如果我想截取大写字母A之前的5个字母,有什么命令可以一步实现吗?或者用for麻烦点怎么实现?最好能够用命令一步实现的。}

[ 本帖最后由 lj84831253 于 2010-4-21 17:48 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

一步实现是不可能的
如果楼主要求的是以大写字母为分隔的话还会更麻烦,批处理区分大小写也很啰嗦。
技术问题请到论坛发帖求助!

TOP

那如果不一步实现而且不是用之母分割,而是用&符号分割呢?多步怎么实现?

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set "n=abcdefgh&afdsafasfasfafafafawef"
  3. :han
  4. if not "!n:~%a%,1!"=="&" set/a a+=1&goto :han
  5. set/a a-=5
  6. echo.!n:~%a%^,5!
  7. pause
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

事先能知道变量n的长度不?,例如20个字符
  1. @echo off&setlocal enabledelayedexpansion
  2. set "n=abcdefgh&afdsafasfas"
  3. for /l %%i in (0,1,19) do if "!n:~%%i,1!"=="&" set/a m=%%i-5&call set "m=%%n:~!m!,5%%"
  4. echo.%m%
  5. pause
复制代码
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

始终认为逐字判断是万不得已才用的办法,因为效率太低
以左起的第一个大写字母 A 为分隔
  1. @echo off & setlocal enabledelayedexpansion
  2. set n=000a1234a1234a56789555115Aafdsafasfasfafafafawef
  3. set m=!n!
  4. set h=!n:A= !
  5. for %%a in (!h!) do (
  6.    set "m=!m:*%%a=!"
  7.    set "var=!var!a%%a"
  8.    if "!m:~0,1!"=="A" goto loop
  9. )
  10. :loop
  11. set "var=!var:~1!"
  12. echo !var:~-5!
  13. pause
复制代码
1

评分人数

技术问题请到论坛发帖求助!

TOP

@echo off&setlocal enabledelayedexpansion
set "str=fjsfjslfsja123&12347284972"
set "var=!str:*&=!"
set "str=!str:%var%=!"
echo %str:~-6,-1%
pause>nul
这个也可以呵呵,谢谢你了!~

TOP

@echo off&setlocal enabledelayedexpansion
set "str=fjsfjslfsja123&12347284972"
for /f "delims=&" %%a in ("!str!") do set "var=%%a"
echo !var:~-5!
pause>nul

TOP

@echo off&setlocal enabledelayedexpansion
set "str=fjsfjslfsja123&12347284972"
:lp
set "var=!var!!str:~,1!"&set "str=!str:~1!"
if "!str:~,1!" neq "&" goto lp
echo !var:~-5!
pause>nul

TOP

返回列表