如何替换批处理文件中字符串中每次出现的=

时间:2019-03-15 22:35:30

标签: string batch-file variables return

第一次发布-对不起! 是的,我已经看到很多关于如何在批处理脚本中替换字符串中字符的文章,但是我似乎无法使它们中的任何一个都使用“ =”。这是我想做的:

这是一个批处理文件,在bash shell中运行:

set ss=param1=  3, pram2 =  27.3, param3  = 11,
echo %ss% | sed 's/=/ /g' |  sed 's/,/ /g'

它精美地写到屏幕上:

param1   3  pram2    27.3  param3    11 

这正是我想要充满的变量,而不是在屏幕上看!我希望它改为写一个变量-例如:

set sss=echo %ss% | sed 's/=/ /g' |  sed 's/,/ /g'
echo %sss% returns ECHO is off.
echo $sss returns $sss

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

set "ss=param1=  3, pram2 =  27.3, param3  = 11,"

for /f "delims=" %%A in (
    'echo %ss%^|sed "s/=/ /g"^|sed "s/,/ /g"'
) do set "sss=%%A"

echo sss: %sss%

在Bash中,您可以将命令的标准输出直接分配给变量。

在CMD中,可以使用for /f循环运行命令并返回Stdout的每一行。 命令运行需要使用|进行转义的^sed的参数可能需要双引号,而不是Bash可能使用的单引号。 delims=选项告诉for循环不要将每一行都分隔成令牌。

查看for /?以获得有关在for循环中运行命令的帮助。