首页 > 解决方案 > Windows 批处理脚本 - 从 D:\Datacom\Pass\tomcat\bin\tomcat7.exe 解析字符串 D:\Datacom\Pass

问题描述

如何在批处理脚本中解析字符串。

我想解析并分配D:\Datacom\PassD:\Datacom\Pass\tomcat\bin\tomcat7.exe一个变量。

我尝试了以下代码,

set pass_path=D:\Datacom\Pass\tomcat\bin\tomcat7.exe
set var1=%pass_path%
set var2=%var1:*Pass=%
echo %var2%

它返回

\tomcat\bin\tomcat7.exe

但我想要第一部分。

D:\Datacom\Pass

标签: windowsbatch-filecmd

解决方案


你可以这样做:

rem // Append a character not present in string:
set "var1=%pass_path%|"
rem // Split off first part to get augmented last part:
set "var2=%var1:*\Pass\=\%"
rem // Split off augmented last part:
call set "var3=%%var1:%var2%=%%"
rem // Return result:
echo %var3%

这只会可靠地工作,因为输入字符串本身预计不包含|.


或者,您可以这样做:

rem // Replace partial string by character not present in string:
set "var1=%pass_path:\Pass\=|%"
rem // Split altered string at that character:
for /F "tokens=1 delims=| eol=|" %%I in ("%var1%") do (
    set "var2=%%I"
)
rem // Append replaced partial string:
set "var3=%var2%\Pass"
rem // Return result:
echo %var3%

这也依赖于输入字符串不包含的假设|


推荐阅读