使用批处理脚本删除字符串直到第一次出现字符

Posted

技术标签:

【中文标题】使用批处理脚本删除字符串直到第一次出现字符【英文标题】:Remove string upto the first occurrence of a character using batch script 【发布时间】:2019-08-09 17:12:47 【问题描述】:

我有一个变量说

var="dev02,qa02,stage,prod,dev02_loc,qa02_loc,stage_loc,prod_loc"

我需要把它转换成

qa02,stage,prod,dev02_loc,qa02_loc,stage_loc,prod_loc

通过删除,第一次出现之前的所有字符

如何使用批处理脚本来做到这一点?

【问题讨论】:

你应该先看看如何提出一个好问题的说明***.com/help/how-to-ask 查看for /?,特别是for /f部分和关于tokens的部分。 ::Delete the character string 'ab' and everything before it 作为上述链接的附注,要设置初始变量%var%,您应该将语法更改为:Set "var=dev02,qa02,stage,prod,dev02_loc,qa02_loc,stage_loc,prod_loc" 【参考方案1】:

你可以做的是使用变量扩展和替换。

在这种情况下,鉴于您声明的变量内容:

dev02,qa02,stage,prod,dev02_loc,qa02_loc,stage_loc,prod_loc

您可以简单地扩展变量,将所有内容替换为第一个逗号之前的所有内容:

Echo(%var:*,=%

要设置初始变量%var%,您应该将语法更改为:

Set "var=dev02,qa02,stage,prod,dev02_loc,qa02_loc,stage_loc,prod_loc"

这将防止双引号包含在变量值中,防止意外尾随空格并保护内容。

【讨论】:

【参考方案2】:

您可以在, 上使用for 循环(参见for /?delimit 并对结果执行一些操作:

@set "var=dev02,qa02,stage,prod,dev02_loc,qa02_loc,stage_loc,prod_loc"
@for /f "tokens=1* delims=," %%i in ("%var%") do @echo(%%j

【讨论】:

在您事先不知道(或定义)变量的情况下,假设 %%j 具有 值是不安全的 - 所以我会 @echo(%%j 避免回显状态正在返回。

以上是关于使用批处理脚本删除字符串直到第一次出现字符的主要内容,如果未能解决你的问题,请参考以下文章

数据库:SUBSTRING 直到第一次出现的字符

删除字符串直到第一次出现右括号

用于删除字符串中重复单词的窗口批处理/DOS脚本[关闭]

${ }引用变量的高级用法

使用应用程序语言(最好是批处理脚本)拆分出现次数可变的字符串

从字符串中删除字符直到另一个字符出现[关闭]