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

CMD script - Truncate string in a for loop

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

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

标签 R4.4 对时间 Fri Jul 25 08:00:00 EDT 2014 with comment Released 7/26/2014

标签 976053_Release4_5 时间 10 月 14 日星期二 11:04:53 EDT 2014

标签我的第 4 个标签 时间 2 月 24 日星期二 19:23:05 2015 年美国东部时间,评论截至今天

我需要提取 "Label" 和 "against" 之间所有突出显示的字符串。我尝试了一个简单的脚本,例如:

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

但是,这将删除“反对”一词之前的所有内容。有没有办法截断“反对”和return字符串之后的所有内容?在“反对”之后用 * 替换该行不起作用...

set Label=!Label: against *=!

提前感谢您的帮助。

一个解决方案是“通过 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
    )
)