Board logo

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

作者: zfkzp    时间: 2011-7-19 21:25     标题: [已解决]批处理怎么去截取某一字符的后面的字符串呢?

已知有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
复制代码
可是截取出来的却不是我想要的,请大侠指点。
作者: CrLf    时间: 2011-7-19 21:48

本帖最后由 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
复制代码

作者: asd821089612    时间: 2011-7-19 22:07

想得简单一点就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 里面
作者: zfkzp    时间: 2011-7-19 22:14

3# asd821089612

会一闪而过,不知道是怎么回事。但愿您自己可以正常使用。
作者: zfkzp    时间: 2011-7-19 22:18

2# CrLf


谢谢了先,还有不过有其他问题,就是最后那个会显示“echo处于关闭状态。”
还有,set可不可以用变量赋值给另一个变量呢?
比如
  1. set %a%=%b%
复制代码
不知道可不可以?
其他都可以。
作者: CUer    时间: 2011-7-19 22:20

  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
复制代码

作者: CUer    时间: 2011-7-19 22:22

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

作者: zfkzp    时间: 2011-7-19 22:27

7# CUer


这样啊……嗯,我知道了。难怪我定义的变量会出问题。
作者: CUer    时间: 2011-7-19 22:32

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

作者: zfkzp    时间: 2011-7-19 22:35

6# CUer


那么如果%%i用到其他地方去的话,最后那个就可能会出问题的,比如:
  1. REG COPY \\ZODIAC\HKLM\Software\MyCo HKLM\"%%1"\MyCo1
复制代码
如果%%i为空的话的话,我猜肯定会出问题的。
作者: CUer    时间: 2011-7-19 22:37

10# zfkzp


可以像2楼版主那样判断一下变量是否为空
作者: CUer    时间: 2011-7-19 22:37

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

作者: zfkzp    时间: 2011-7-19 22:41

11# CUer

那样就不会有事了……我试过了,可以的。谢谢了哈。
作者: 1130342432    时间: 2011-7-20 02:56

@echo off
setlocal enabledelayedexpansion
for /f "delims=^=  tokens=2" %%i in (test.txt) do echo %%i
pause
作者: cjiabing    时间: 2011-7-20 09:40

3# asd821089612


DO前面少一个输入变量和集合,请检查。
作者: Hello123World    时间: 2011-7-23 14:00

  1. @echo off&SetLocal EnableDelayedExpansion
  2. For /f "usebackq tokens=2 delims==" %%i in ("1.txt") do Echo %%i
  3. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2