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

[文本处理] [已解决]批处理怎么去截取某一字符的后面的字符串呢?

已知有F:\i love bathome\text.txt如下文本
  1. .ssa=xmp.ssa
  2. .ssf=SogouSkinFile
  3. .sso=SogouExtensionFile
  4. .sst=CertificateStoreFile
  5. .sta=Photoshop.STAFile.12
  6. .ste=Dreamweaver.Site.Definition
  7. .e=
复制代码
想截取等号后面的东西?试过用for来写:
  1. @echo off&setlocal enabledelayedexpansion
  2. set FF=F:\i love bathome\text.txt
  3. for /f "tokens=1 delims=(," %%i in ('type "%FF%"^|findstr /i "="') do (set dim=%%~i)
  4. echo %dim%
  5. pause>nul
  6. exit /b
复制代码
可是截取出来的却不是我想要的,请大侠指点。
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2
I Love Batch as love my life!

本帖最后由 CrLf 于 2011-7-19 22:47 编辑

可以用 delims 直接截取
  1. @echo off
  2. set FF=F:\i love bathome\text.txt
  3. for /f "useback tokens=1* delims==" %%i in ("%ff%") do if "%%j" neq "" echo;%%j
  4. pause>nul
复制代码

TOP

想得简单一点就OK了嘛   用FOR 用得简单一点
  1. @echo off
  2. cd /d F:\i love bathome\
  3. for /f "delims== tokens=1,*" do (echo %%j>a.txt)
  4. pause>nul
复制代码
你要的东西在a.txt 里面

TOP

3# asd821089612

会一闪而过,不知道是怎么回事。但愿您自己可以正常使用。
I Love Batch as love my life!

TOP

2# CrLf


谢谢了先,还有不过有其他问题,就是最后那个会显示“echo处于关闭状态。”
还有,set可不可以用变量赋值给另一个变量呢?
比如
  1. set %a%=%b%
复制代码
不知道可不可以?
其他都可以。
I Love Batch as love my life!

TOP

  1. @echo off
  2. for /f "usebackq tokens=2 delims==" %%i in ("F:\i love bathome\text.txt") do (
  3.     echo,%%i
  4. )
  5. pause
复制代码
2

评分人数

TOP

5# zfkzp
  1. @echo off
  2. set b=hello
  3. set a=%b%
  4. echo,%a%
  5. pause
复制代码

TOP

7# CUer


这样啊……嗯,我知道了。难怪我定义的变量会出问题。
I Love Batch as love my life!

TOP

  1. gawk -F= "{print $2}" a.txt
复制代码

TOP

6# CUer


那么如果%%i用到其他地方去的话,最后那个就可能会出问题的,比如:
  1. REG COPY \\ZODIAC\HKLM\Software\MyCo HKLM\"%%1"\MyCo1
复制代码
如果%%i为空的话的话,我猜肯定会出问题的。
I Love Batch as love my life!

TOP

10# zfkzp


可以像2楼版主那样判断一下变量是否为空

TOP

  1. sed "s/.*=//" a.txt
复制代码

TOP

11# CUer

那样就不会有事了……我试过了,可以的。谢谢了哈。
I Love Batch as love my life!

TOP

@echo off
setlocal enabledelayedexpansion
for /f "delims=^=  tokens=2" %%i in (test.txt) do echo %%i
pause
1

评分人数

    • CrLf: 虽是助人为乐,但也别忘了用code哦PB -1

TOP

3# asd821089612


DO前面少一个输入变量和集合,请检查。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

返回列表