替换批处理脚本中的字符串字符

Jim*_*mmy 3 batch-file

我需要*从字符串替换字符,这是这样的:
*10.*31.**2.*65

我想*使用批处理脚本从此字符串中删除所有内容.

mgt*_*s99 24

您可以将删除过程简化为一行.例如,如果我有这样的字符串:

set string=hello!
Run Code Online (Sandbox Code Playgroud)

我想删除"!" 在其中,我可以做到

set string=%string:!=%
Run Code Online (Sandbox Code Playgroud)

该字符串现在将具有值"hello"而不是"hello!"

编辑:正如jeb在评论中指出的那样,你无法"*"使用这种方法替换.这是因为*是批处理文件模式匹配的通配符(这里有精彩的解释).我在发布这个答案时并不知道这个,因为我假设这个替换方法适用于所有输入字符串.如果你特别需要更换*,我建议按照magoo的回答.否则,我将为那些需要通用,简短,单线程解决方案来批量替换字符串的人保留这个答案.

  • 这不是qeustion的答案,因为你不能用这个方法替换`*`.作为替换表达式,开头`*`具有特殊含义. (4认同)

Mag*_*goo 5

@ECHO OFF
SETLOCAL
SET mystring=*10.31.*2.*65
:deaster
FOR /f "tokens=1* delims=*" %%i IN ("%mystring%") DO (
   SET mystring=%%j
   IF DEFINED mystring (
      SET mystring=%%i%%j
      GOTO deaster
   ) ELSE (
      SET mystring=%%i
   )
)
ECHO result=%mystring%=
Run Code Online (Sandbox Code Playgroud)