找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18564|回复: 10

批处理如何在下列字符中以bathome为分隔符

[复制链接]
发表于 2008-1-12 17:59:11 | 显示全部楼层 |阅读模式
Str=fdkljdlkdfdkljgflkkgffkljflkbathome;lkdf;ljkdg;lkfdbathome;dlfld;lkl;kl;l,.da/u/kbathomefdaffas
请以bathome为分隔符吧他分为几段。
发表于 2008-1-12 19:25:11 | 显示全部楼层
  1. @echo off
  2. set "str=fdkljdlkdfdkljgflkkgffkljflkbathome;lkdf;ljkdg;lkfdbathome;dlfld;lkl;kl;l,.da/u/kbathomefdaffas"
  3. set "str=%str:bathome=_%"
  4. for /f "tokens=1-4 delims=_" %%a in ("%str%") do (
  5. echo %%a^

  6. %%b^

  7. %%c^

  8. %%d)
  9. pause
复制代码


[ 本帖最后由 wxcute 于 2009-5-10 11:08 编辑 ]
发表于 2008-4-27 20:53:14 | 显示全部楼层
恩,这是一种解决办法。
但有时候拿到一个很长的文本后,不知道哪个字符没有被用到。
或者在经过仔细查找后,发现所有字符都有用到.就比较麻烦了。
发表于 2008-4-27 21:20:38 | 显示全部楼层
  1. @echo off
  2. set "str=fdkljdlkdfdkljgflkk gffkljflkbathome;lkdf;ljkdg;lkfdbathome;dlfld;lkl;kl;l,.da/u/kbathomefdaffas"
  3. set "str=%str: =n#a#t#u#r#e%"
  4. set "str=%str:bathome= %"
  5. for /f "tokens=1-4 delims= " %%i in ("%str%") do (
  6. call :conv "%%i"
  7. call :conv "%%j"
  8. call :conv "%%k"
  9. call :conv "%%l"
  10. )
  11. pause&exit
  12. :conv
  13. set "s=%~1"
  14. set "s=%s:n#a#t#u#r#e= %"
  15. echo %s%
复制代码
没有人会用到“n#a#t#u#r#e”吧。除了我...o(∩_∩)o...

评分

参与人数 1PB +4 收起 理由
youxi01 + 4

查看全部评分

发表于 2008-4-27 21:32:26 | 显示全部楼层
呵呵,楼上MM的思路还蛮细腻啊,赞一个!
发表于 2008-4-27 21:42:51 | 显示全部楼层
那就来个不用查找的。
  1. @echo off
  2. set "Str=bathome112222bathome;l23333 33bathome;4444bathome555bathome"
  3. :loop
  4.    set num=%str:*bathome=%
  5.    call set var=a%%str:bathome%num%=%%a
  6.    if not "%var%"=="aa" echo.%var:~1,-1%
  7.    set str=%num%
  8.    if "%str%"=="%var:~1,-1%" set "num="
  9.    if defined num goto loop
  10. pause
复制代码
发表于 2008-4-27 22:13:41 | 显示全部楼层

回复 5楼 的帖子

谢谢啦...去年暑假有个偶然的机会学的。
在我们班里面我看起来比较小...都比他们小一岁噢。
很快就高考了...可能一个多月后才能常看望论坛可爱的大伙儿们。
“youxi01”是“游戏01”的意思么?
发表于 2008-4-27 22:16:41 | 显示全部楼层

回复 6楼 的帖子

看到随风的不少代码,都是可以“不用查找”的...嗯嗯,思路很不错。
发表于 2008-4-28 10:51:39 | 显示全部楼层
强人。
顺带请教个问题,echo 777bathome112222bathome;l23333 33bathomebathome;4444bathome555bathome|findstr "bathome"
输出到屏幕上的内容怎么存到某个变量里?
发表于 2008-4-28 13:53:17 | 显示全部楼层
用for来接收,然后用set定义相关变量就行了。
如:
  1. @echo off
  2. for /f "delims=" %%i in ('echo 33bathomebathome;4444bathome555bathome^|findstr "bathome"') do set test=%%i
  3. echo %test%
  4. pause>nul
复制代码
发表于 2008-4-28 14:46:36 | 显示全部楼层
echo 33bathomebathome;4444bathome555bathome|findstr "bathome"
的结果是:33bathomebathome;4444bathome555bathome
用for接收后那个分号";" 变成空格" "了.
看来分号:前面也要加上^

方法是可以用的,谢谢 呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:35 , Processed in 0.019169 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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