【问题标题】:How to replace every occurrence of = in a string in batch file [duplicate]如何替换批处理文件中字符串中每次出现的= [重复]
【发布时间】:2019-08-07 01:24:59
【问题描述】:

第一次发帖-抱歉! 是的,我看过很多关于如何在批处理脚本中替换字符串中的字符的帖子,但我似乎无法让它们中的任何一个与“=”一起使用。这是我想做的:

这是一个批处理文件,在 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

非常感谢您的帮助!

【问题讨论】:

    标签: string batch-file variables return


    【解决方案1】:
    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 循环来运行命令并返回标准输出的每一行。 命令运行需要使用^ 转义的|sed 的参数可能需要双引号,而不是 Bash 可能使用的单引号。 delims= 选项告诉for 循环不要将每一行分隔成标记。

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

    【讨论】:

    • 谢谢迈克尔,你的第一个例子就像一个魅力......虽然我需要做更多的研究来了解它到底为什么会这样。
    • 欢迎您。我更新了答案,简要说明了为什么 CMD 需要 for 循环来捕获标准输出。
    猜你喜欢
    • 2011-02-15
    • 2013-06-13
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多