windows - Windows 批处理脚本 - 从 D:\Datacom\Pass\tomcat\bin\tomcat7.exe 解析字符串 D:\Datacom\Pass
问题描述
如何在批处理脚本中解析字符串。
我想解析并分配D:\Datacom\Pass
给D:\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
解决方案
你可以这样做:
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%
这也依赖于输入字符串不包含的假设|
。
推荐阅读
- database - 如何优化 Bigquery 导出数据流式插入中的查询分析和存储成本,这些插入在一天中以不同的时间间隔发生?
- google-chrome - Chrome 80+ 与跨站点资源关联的 cookie 设置为没有“SameSite”属性。它已被阻止
- c++ - 在哪里声明结构运算符重载
- html - 我需要帮助排列和间隔我的导航栏链接
- xamarin - 我们如何在 Xamarin.forms 中添加 android nugets 而不仅仅是在 Xamarin.Android
- ruby-on-rails - 如何查询邮件任务
- c# - 将参数传递给控制器的 HttpPost 方法
- css - 如何在 CSS 中的 ul 中制作响应式 li 元素
- python-3.x - 获取熊猫数据框中子节点的所有直接中间和最终父节点
- encapsulation - 如果我是唯一一个使用我的代码的人,是否有理由封装?