标题: 批处理如何在下列字符中以bathome为分隔符 [打印本页]
作者: novaa 时间: 2008-1-12 17:59 标题: 批处理如何在下列字符中以bathome为分隔符
Str=fdkljdlkdfdkljgflkkgffkljflkbathome;lkdf;ljkdg;lkfdbathome;dlfld;lkl;kl;l,.da/u/kbathomefdaffas
请以bathome为分隔符吧他分为几段。
作者: ieutk 时间: 2008-1-12 19:25
- @echo off
- set "str=fdkljdlkdfdkljgflkkgffkljflkbathome;lkdf;ljkdg;lkfdbathome;dlfld;lkl;kl;l,.da/u/kbathomefdaffas"
- set "str=%str:bathome=_%"
- for /f "tokens=1-4 delims=_" %%a in ("%str%") do (
- echo %%a^
-
- %%b^
-
- %%c^
-
- %%d)
- pause
复制代码
[ 本帖最后由 wxcute 于 2009-5-10 11:08 编辑 ]
作者: xiaoxx 时间: 2008-4-27 20:53
恩,这是一种解决办法。
但有时候拿到一个很长的文本后,不知道哪个字符没有被用到。
或者在经过仔细查找后,发现所有字符都有用到.就比较麻烦了。
作者: 梦想种子 时间: 2008-4-27 21:20
- @echo off
- set "str=fdkljdlkdfdkljgflkk gffkljflkbathome;lkdf;ljkdg;lkfdbathome;dlfld;lkl;kl;l,.da/u/kbathomefdaffas"
- set "str=%str: =n#a#t#u#r#e%"
- set "str=%str:bathome= %"
- for /f "tokens=1-4 delims= " %%i in ("%str%") do (
- call :conv "%%i"
- call :conv "%%j"
- call :conv "%%k"
- call :conv "%%l"
- )
- pause&exit
- :conv
- set "s=%~1"
- set "s=%s:n#a#t#u#r#e= %"
- echo %s%
复制代码
没有人会用到“n#a#t#u#r#e”吧。除了我...o(∩_∩)o...
作者: youxi01 时间: 2008-4-27 21:32
呵呵,楼上MM的思路还蛮细腻啊,赞一个!
作者: 随风 时间: 2008-4-27 21:42
那就来个不用查找的。- @echo off
- set "Str=bathome112222bathome;l23333 33bathome;4444bathome555bathome"
- :loop
- set num=%str:*bathome=%
- call set var=a%%str:bathome%num%=%%a
- if not "%var%"=="aa" echo.%var:~1,-1%
- set str=%num%
- if "%str%"=="%var:~1,-1%" set "num="
- if defined num goto loop
- pause
复制代码
作者: 梦想种子 时间: 2008-4-27 22:13 标题: 回复 5楼 的帖子
谢谢啦...去年暑假有个偶然的机会学的。
在我们班里面我看起来比较小...都比他们小一岁噢。
很快就高考了...可能一个多月后才能常看望论坛可爱的大伙儿们。
“youxi01”是“游戏01”的意思么?
作者: 梦想种子 时间: 2008-4-27 22:16 标题: 回复 6楼 的帖子
看到随风的不少代码,都是可以“不用查找”的...嗯嗯,思路很不错。
作者: xiaoxx 时间: 2008-4-28 10:51
强人。
顺带请教个问题,echo 777bathome112222bathome;l23333 33bathomebathome;4444bathome555bathome|findstr "bathome"
输出到屏幕上的内容怎么存到某个变量里?
作者: youxi01 时间: 2008-4-28 13:53
用for来接收,然后用set定义相关变量就行了。
如:- @echo off
- for /f "delims=" %%i in ('echo 33bathomebathome;4444bathome555bathome^|findstr "bathome"') do set test=%%i
- echo %test%
- pause>nul
复制代码
作者: xiaoxx 时间: 2008-4-28 14:46
echo 33bathomebathome;4444bathome555bathome|findstr "bathome"
的结果是:33bathomebathome;4444bathome555bathome
用for接收后那个分号";" 变成空格" "了.
看来分号:前面也要加上^
方法是可以用的,谢谢 呵呵。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |