在批处理脚本中,是否有一种方法可以在每行的开头添加多个空格,而不中断语法,并在每一行上保留空格,如下面的示例所示?
gacutil /u ^ Microsoft.IdentityModel.Clients.ActiveDirectory,^ Version=2.28.0.725,^ Culture=neutral,^ PublicKeyToken=31bf3856ad364e35
其目标是不仅在使用 gacutil.exe 时而且在编写批处理命令时允许更好的可读性。
gacutil.exe
618夏日盛惠
2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…
每个可执行文件都有自己的规则集,用于将可执行文件名后的字符串拆分为可执行文件进一步处理的参数值。
windows命令处理器 cmd.exe 解释一个水平制表符、一个普通空格、一个逗号、一个分号、一个等号和一个OEM编码的无中断空间(带有十六进制值FF的字节),在一个双引号字符串之外解释为参数分隔符,因为在运行一个名为 test.cmd 的批处理文件时,可以从命令提示符窗口中只看到命令行 @echo %0 $1 $2 $3 $4 。
cmd.exe
test.cmd
@echo %0 $1 $2 $3 $4
test argument1,,,"argument 2";;;"argument 3 contains a comma ',' a semicolon ';' an equal sign '=' and multiple spaces"===argument4
导致产出
test argument1 "argument 2" "argument 3 contains a comma ',' a semicolon ';' an equal sign '=' and multiple spaces" argument4
,,, 、 ;;; 和 === 被解释为参数字符串分隔符。
,,,
;;;
===
全局程序集缓存工具 gacutil.exe 将传递给它的字符串拆分为与 cmd.exe 不同的参数字符串。逗号和等号不被解释为参数分隔符。只有法线空间字符被解释为参数分隔符,除了一个法线空间在一个双引号参数字符串中。
对于Windows可执行文件来说,参数字符串之间的参数分隔符的数量并不重要。因此,如果在两个参数字符串之间只使用一个空格或多个空格,则无关紧要。
在批处理文件中使用以下行会发生什么情况?
gacutil /u ^ Microsoft.IdentityModel.Clients.ActiveDirectory,^ Version=2.28.0.725,^