我的输入是一个文本文件(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 *=!
提前感谢您的帮助。
答案 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
)
)