在Windows命令提示符下的文件中查找并打印带有通配符的子字符串

时间:2015-10-16 09:18:26

标签: windows batch-file cmd

我很确定这是一个简单的命令,但我无法在任何地方找到它。

示例文件内容:

A-极长LINE-OF-垃圾VERSION123-CONTINUE-LONG-LINE-OF-垃圾

1.)假设该行真的很长

2.)我需要找出它是什么版本。我知道它包含版本,但我不知道它是版本123。

3.)我想要的是一个命令,它将通过文件查找子字符串" VERSION"如果它发现它打印出VERSION123而不是超级duper长线,这很可能导致系统冻结。

谢谢

1 个答案:

答案 0 :(得分:3)

假设该版本纯数字且不以零开头,则应执行以下操作:

set VAR=A-VERY-LONG-LINE-OF-GARBAGE-VERSION123-CONTINUE-LONG-LINE-OF-GARBAGE
set /A VAR=%VAR:*VERSION=%
echo VERSION%VAR%

如果出现多个VERSION部分,则会拍摄第一部分。

请注意,这仅适用于Windows命令提示符(cmd.exe),由于command.com,它将适用于MS-DOS(set /A)那里不支持(我甚至不确定字符串替换语法是否在那里工作)!

如果版本代码不是纯数字,您可以使用以下内容:

set VAR=A-VERY-LONG-LINE-OF-GARBAGE-VERSION123-CONTINUE-LONG-LINE-OF-GARBAGE
set VAR=%VAR:*VERSION=%
for /F "tokens=1 delims=- eol=-" %%L in ("%VAR%") do (set VAR=%%L)
echo VERSION%VAR%

这取决于-字符分隔版本代码的事实。

如果您想直接在命令提示符中而不是在批处理文件中尝试此操作,请将%%L替换为%L(两次)。