无忧启动论坛

标题: cmd 如何截取字串 [打印本页]

作者: wang6610    时间: 2014-1-14 17:32
标题: cmd 如何截取字串
本帖最后由 wang6610 于 2014-1-14 17:45 编辑

批处理截取 ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh  其中的 "cccg0hzg5uik2"  并赋值 给变量 aa .
作者: dos时代菜鸟    时间: 2014-1-14 20:47
就这一行数据?有啥规律么 ?要截取 的内容 有啥特点 ?

截取倒是 容易 用 %x:~n,y% 之类的就行了。

关键是要有 规律性 才好写入 脚本 ,不然 直接手动 输入岂不是更方便?
作者: wang6610    时间: 2014-1-14 21:01
本帖最后由 wang6610 于 2014-1-14 21:07 编辑

谢谢 dos时代菜鸟兄弟 回帖!


ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh


应该是有很多行.每行中 cccg0hzg5uik2 都不同, 都是从每行倒数第6个字符开始共13个,


一次截取某行中的cccg0hzg5uik2 赋值给一个变量.
作者: dos时代菜鸟    时间: 2014-1-15 08:04
是随机截取某一行?还是 最后一行?还是 。。。。。?
下面这个是显示所有行 你要的那截字符串。 然后。。。。哈哈,自己研究吧。

  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. for /f %%c in (file.txt) do (
  4.   set str=%%c
  5.   echo  !str:~-18,13!
  6. )
复制代码

作者: wang6610    时间: 2014-1-16 20:42
dos时代菜鸟 发表于 2014-1-15 08:04
是随机截取某一行?还是 最后一行?还是 。。。。。?
下面这个是显示所有行 你要的那截字符串。 然后。。 ...


谢谢 dos时代菜鸟兄弟 回帖!

您给的bat 结果前后都有一个多余的空格。

能实现下面的功能吗?
@echo off
set str=ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh
.....
通过截取str变量中的 cccg0hzg5uik2 赋值给 aa变量 吗?
作者: fuldho    时间: 2014-1-17 08:30
for,/f,"tokens=2 delims=_",%%i,In (file.txt) Do (
               set a=%%i
)
for,/f,"tokens=1 delims=.",%%i,In ("%a%") Do (
               set aa={%%i}
)
echo %aa%
pause
作者: dos时代菜鸟    时间: 2014-1-17 09:04
空格?这个。。。。,不是技术问题,是手法问题,
把 "echo  !str:~-18,13! ”  换成 "echo !str:~-18,13!"

就是语句中 随笔多带了两个空格造成的,如果用set 命令进行赋值 可以加上 引号避免之。


作者: pznpt    时间: 2014-1-17 09:08
本帖最后由 pznpt 于 2014-1-17 09:15 编辑
  1. @echo off
  2. set "str=ffff://vvvv.fffff.dd/ffffff/fff_cccg0hzg5uik2.hhhh"
  3. for /f "delims=" %%i in ("%str:_=/%") do set "aa=%%~ni"
  4. echo,%aa%
  5. pause
复制代码


作者: wang6610    时间: 2014-1-17 11:32
谢谢pznpt 兄弟回帖.........
作者: wang6610    时间: 2014-1-18 11:31
fuldho 发表于 2014-1-17 08:30
for,/f,"tokens=2 delims=_",%%i,In (file.txt) Do (
               set a=%%i
)

谢谢回符......................
作者: cht501155    时间: 2014-2-20 14:49
不错,支持一下!很好用谢谢!!!




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net./) Powered by Discuz! X3.3