Windows 在批处理文件中执行对带有变量的标签的调用

Windows 在批处理文件中执行对带有变量的标签的调用,windows,variables,batch-file,label,call,Windows,Variables,Batch File,Label,Call,这应该很简单,但我不明白 我想在批处理文件中使用变量作为参数调用标签,如下所示: echo off set TEST=message text call :MESSAGE %TEST% more text :MESSAGE echo %1 我得到的是: C:\>echo off message ECHO is off. :消息是一个标签。没有边界可以避免在执行后输入代码,但这次到达代码时没有要回显的参数,并且从此处回显关闭 @echo off set TEST=message te

这应该很简单,但我不明白

我想在批处理文件中使用变量作为参数调用标签,如下所示:

echo off
set TEST=message text
call :MESSAGE %TEST% more text
:MESSAGE
echo %1
我得到的是:

C:\>echo off
message
ECHO is off.

:消息
是一个标签。没有边界可以避免在执行后输入代码,但这次到达代码时没有要回显的参数,并且从此处
回显关闭

@echo off
  set TEST=message text
  call :MESSAGE %TEST% more text
  goto :eof

:MESSAGE
  echo %1

现在
goto:eof
(或
exit/b
离开批处理文件或
exit
关闭控制台)避免在标签后继续执行代码使用%*而不是%1。。。就这么简单

解释示例中发生的情况:
message
来自子例程调用,其中%1是%TEST%的“message”部分。下一个输出
ECHO关闭。
来自子例程调用后执行返回且%1现在未设置时;所以它只是第二次执行
echo
。使用
echo%1%2%3%4
进行尝试,您应该会收到
消息文本或更多文本。您需要如下所示的流量控制。谢谢您的解释。问题是,在“现实生活”中,这种代码的和平需要使用不同的消息多次调用,而不总是使用相同数量的参数。这段代码的要点正是要执行消息sob例程,因为消息本身要显示在屏幕上,并且至少要显示3个不同的日志文件。因此,将减少许多行中的代码。有什么想法吗?如果您想要所有文本(
消息文本更多文本
),请使用
%*
而不是
%1
),即Stephan!谢谢:)