在很多情况下,我处理过使用空格、引号、百分比和斜杠以及它们的各种组合传递批处理文件参数。通常我设法弄清楚如何完成我想要的,但这次我被卡住了。我现在已经尝试了几百种组合,我的头开始疼了。
我已将问题简化为一个相当简单的要求:从一个批处理文件传递到另一个批处理文件,该参数包含一些以空格分隔的文本,其中一个是带引号的空格。也就是说,一个批处理文件应该将一些字符串传递X
给另一个,以便第二个回显"A "B C" D"
。我只是不知道X
应该是什么。
这是一个最小的批处理文件,它演示了一些不起作用的尝试。(此 BAT 文件通过调用自身来代替两者。)
::Goal is to print:
::"A "B C" D"
::ie., pass from one BAT file to another a quote containing spaces and a quote containing a space
@echo off
if not (%1)==() goto print
:passarg
call %0 "A "B C" D"
call %0 "A \"B C\" D"
%0 "A ""B C"" D"
:print
echo %1
pause
这些尝试都不起作用。我试过使用"\" \""
, """ """
, """" """"
, "\"" "\""
, ""\" \"""
, "^" ^""
, ^"" "^"
, 等等。他们要么打印双双引号,要么在空格后丢失所有内容,要么是其他东西(这是错误的)。
有任何想法吗?谢谢。