批处理文件 – 在Windows批处理中将双引号线分解成多行

前端之家收集整理的这篇文章主要介绍了批处理文件 – 在Windows批处理中将双引号线分解成多行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Windows批处理文件中的长命令可以通过使用^来分割为多行,如 this post所述。

但是,如果插入符号在双引号字符串内,它将无法正常工作。例如:

  1. echo "A very long line I want to ^
  2. split into two lines"

这将打印“我想要的一个很长的行,并告诉我拆分是一个未知的命令。

有没有办法解决这个问题?

我看到三种可能的解决方法

1)构建组合多个参数的行。

  1. @echo off
  2. SETLOCAL EnableDelayedExpansion
  3.  
  4. set "line="
  5. for %%a in ("line1"
  6. "line2"
  7. "line3"
  8. "line4"
  9. ) do set line=!line!%%~a
  10. echo !line!

2)将“引用”留在每一行的末尾

  1. @echo on
  2. SETLOCAL EnableDelayedExpansion
  3.  
  4. set "line=line1 & x#"^
  5. "line2 & a#"^
  6. "line3 & b #"^
  7. "line4 & c "
  8.  
  9. set "line=!line:#" "=!"
  10. echo !line!

每一行中的第一个空格很重要,因为插入符号是多行字符,但它也会转义第一个字符,所以也会引用一个引号。
所以在建立线路之后,我更换不平等的“”“

编辑添加:3)消失的报价

  1. setlocal EnableDelayedExpansion
  2. echo "A very long line I want to !"=!^
  3. split into two lines"

在我看来,这是最好的方法,它的作用是解析器首先看到引号,因此最后一个插入符将起作用,因为它似乎不在引号之内。
但是这个!“=!表达式将扩展名为”=“的变量,但是这样一个变量名不能存在(等号只能作为第一个字符出现),因此扩展为无。

您还可以创建安全的表达式,如果有一个报价,它们将永远脱离报价,独立。
! “^”=!

  1. echo This multiline works !"^"=!^
  2. as expected
  3. echo "This multiline works !"^"=!^
  4. too"

如果你想避免延迟扩展,你也可以使用-FOR-Loop

  1. for %%^" in ("") do (
  2. echo "This multiline works %%~"^
  3. too"
  4. )

猜你在找的Windows相关文章