在字符串中提取子字符串

时间:2018-05-17 09:33:42

标签: string windows batch-file

给出以下字符串:

[0.020s][info][class,load] opened: C:\Program Files\Java\jdk-9.0.1\lib\modules

如何编写Windows批处理文件.bat或命令脚本.cmd,以仅提取字符串的C:\Program Files\Java\jdk-9.0.1部分? (使用其位置不满意)

3 个答案:

答案 0 :(得分:0)

如果字符串位于名为input.txt的文件中,请尝试这样:

for /f "tokens=2* delims=\:" %%a in (input.txt) do set "$path=%%a:\%%b"
echo %$path:~1%

答案 1 :(得分:0)

如果字符串包含在变量中,则可以使用字符串替换:

set string="[0.020s][info][class,load] opened: C:\Program Files\Java\jdk-9.0.1\lib\modules"
set "jdkmod="%string:*: =%"
set jdkmod

示例输出:

jdkmod="C:\Program Files\Java\jdk-9.0.1\lib\modules"

答案 2 :(得分:0)

从您的问题中不清楚字符串的来源,或者是否已针对该字符串使用的特定输出进行过滤。

以下假设您正在寻找直到lib的父目录的路径:

@Echo Off
Set "String=[0.020s][info][class,load] opened: C:\Program Files\Java\jdk-9.0.1\lib\modules"
For /F "Tokens=2*" %%A In ('"Echo %String:\lib\=&:%"') Do Set "var=%%~B"
Echo [%var%]
Pause

示例输出:

[C:\Program Files\Java\jdk-9.0.1]