Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何替换批处理文件中字符串中出现的每一个=_String_Batch File_Variables_Return - Fatal编程技术网

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

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 这正是我希望变量充

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

这是一个批处理文件,在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
非常感谢你的帮助

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。