我尝试在发送字符串变量时调用批处理文件,但是当我尝试获取它时,它只显示字符串的第一个单词。
在调用其他程序之前,我会回显它来检查它是否已定义,并且我看到了整个句子(第一个文件):
set /p input=
echo %input%
call test.bat %input%
但是当我尝试获取它(第二个文件)时:
set output=%1
echo %output%
它只显示第一个单词。
我需要做什么才能使用调用命令将整个句子从一个批处理文件传输到另一个批处理文件?
答案1
原因很简单。
使用批处理文件时,每个参数都可以通过 %1、%2、%3... 访问,最多 9 个参数。
参数之间用空格分隔,因此如果您输入更多单词并用空格分隔,实际上它们会变成多个参数。不过解决方法很简单,将 %input% 放在引号内,让批处理文件明白它应该是一个参数。您的脚本将变成:
set /p input=
echo %input%
call test.bat "%input%"
答案2
如果输入包含空格,则必须使用引号输入,以便批处理将整个参数捕获为一个,包含空格。
现在,在第二批中,您只需将符号添加~
到参数中,如下所示:
REM Note the use of ~ after the percentage symbol
set output=%~1
echo %output%
答案3
LPChip 的解决方案听起来不错,如果您想删除引号,请查看此帖子: https://stackoverflow.com/a/379779/4828335