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
)
)
我的输入是一个文本文件 (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
)
)