CMD脚本 - 在for循环中截断字符串

时间:2015-02-25 00:55:58

标签: string loops for-loop cmd truncate

我的输入是一个文本文件(itemLabels.txt),其中包含4行字符串,如:

标签 4.3.23 对阵时间2月13日星期四16:30:37 2014

标签 R4.4 对抗时间7月25日08:00:00 EDT 2014评论发布于2014/7/26

标签 976053_Release4_5 对抗时间Tue Oct 14 2014年4月14日11:04:53

标签我的第四个标签对抗时间2月24日星期二19:23:05 2015年评论截至今天

我需要在"标签"之间提取所有突出显示的字符串。并且"反对"。我尝试过一个简单的脚本:

setlocal enabledelayedexpansion
for /f "tokens=1,*" %%a in (itemLabels.txt) do (
    set Label=%%b
    set Label=!Label:* against =!
    echo !Label!
)
然而,这会消除"之前的所有内容。反对"字。是否有任何方法可以截断一切后"反对"并返回字符串?在"之后用*替换该行。反对"没有工作......

set Label=!Label: against *=!

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

一种解决方案是“通过 against time 对行的其余部分进行令牌化,并获取第一个令牌”。太糟糕了,for /f ...命令只能按单个字符分割。

但你可以先用一些单个字符替换该字符串(你确定不会在标签名称中出现,我选择*),然后将其拆分:

setlocal enabledelayedexpansion
for /f "tokens=1,*" %%a in (itemLabels.txt) do (
    set Label=%%b
    for /f "tokens=1 delims=*" %%c in ("!Label: against time =*!") do (
        echo %%c
    )
)