String 如何替换批处理文件中字符串中出现的每一个=
第一次发帖-对不起! 是的,我看过很多关于如何在批处理脚本中替换字符串中的字符的帖子,但我似乎无法让它们中的任何一个与=。以下是我想做的: 这是一个批处理文件,在bash shell中运行:String 如何替换批处理文件中字符串中出现的每一个=,string,batch-file,variables,return,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 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
非常感谢你的帮助
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中,可以将命令的Stdout直接分配给变量
在CMD中,可以使用for/f循环来运行命令并返回每行Stdout。
命令运行需要|转义为^。
sed的参数可能需要双引号,而不是Bash可能使用的单引号。
delims=选项告诉for循环不要将每一行划分为标记
查看/?有关在for循环中运行命令的帮助。谢谢你,Michael,你的第一个示例非常有用……不过我需要做更多的研究来理解它到底为什么会这样。欢迎。我更新了答案,简要说明了为什么CMD需要for循环来捕获stdout。