批处理文件 – 在Windows批处理中将双引号线分解成多行
发布时间:2020-12-13 21:07:47 所属栏目:Windows 来源:网络整理
导读:Windows批处理文件中的长命令可以通过使用^来分割为多行,如 this post所述。 但是,如果插入符号在双引号字符串内,它将无法正常工作。例如: echo "A very long line I want to ^split into two lines" 这将打
Windows批处理文件中的长命令可以通过使用^来分割为多行,如
this post所述。
但是,如果插入符号在双引号字符串内,它将无法正常工作。例如: echo "A very long line I want to ^ split into two lines" 这将打印“我想要的一个很长的行,并告诉我拆分是一个未知的命令。 有没有办法解决这个问题?
我看到三种可能的解决方法。
1)构建组合多个参数的行。 @echo off SETLOCAL EnableDelayedExpansion set "line=" for %%a in ("line1" "line2" "line3" "line4" ) do set line=!line!%%~a echo !line! 2)将“引用”留在每一行的末尾 @echo on SETLOCAL EnableDelayedExpansion set "line=line1 & x#"^ "line2 & a#"^ "line3 & b #"^ "line4 & c " set "line=!line:#" "=!" echo !line! 每一行中的第一个空格很重要,因为插入符号是多行字符,但它也会转义第一个字符,所以也会引用一个引号。 编辑添加:3)消失的报价 setlocal EnableDelayedExpansion echo "A very long line I want to !"=!^ split into two lines" 在我看来,这是最好的方法,它的作用是解析器首先看到引号,因此最后一个插入符将起作用,因为它似乎不在引号之内。 您还可以创建安全的表达式,如果有一个报价,它们将永远脱离报价,独立。 echo This multiline works !"^"=!^ as expected echo "This multiline works !"^"=!^ too" 如果你想避免延迟扩展,你也可以使用-FOR-Loop for %%^" in ("") do ( echo "This multiline works %%~"^ too" ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |