繁体   English   中英

批量将参数传递给函数

[英]Pass argument to a function in batch

我正在尝试创建一个简单的批处理脚本,该脚本具有一个带有单个参数的过程。 遵循互联网上的一些资源,我创建了以下示例代码:

:logMessage
   @echo on
   echo Hi, %1
   @echo off
goto :eof

call:logMessage "Izomorphius"

但是我没有得到我期望的输出-仅打印“ Hi”,而没有参数。 我究竟做错了什么?

我认为所有批处理功能都需要在任何调用代码之后的文件末尾定义。

call:logMessage "Izomorphius"
goto :eof

:: Start function definitions ---

:logMessage
   @echo on
   echo Hi, %1
   @echo off
   goto :eof

这是一个可行的简化版本

@echo off
call :logMessage "Izomorphius"
goto :eof

:logMessage
echo Hi, %1

请注意,它实际上会在Izomorphius周围打印引号,但是如果您不希望使用引号, Izomorphius删除。

您的代码只需要进行调整:

goto main                                     & :: Add this line...
:logMessage
   @echo on
   echo Hi, %1
   @echo off
goto :eof

:main                                         & :: ...and this line.
call:logMessage "Izomorphius"

根据我之前的评论。

这段代码有错误,但这是另一个技巧:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
echo.
set "NAME=Izomorphius"
call :prepend NAME Hi
echo Message: %NAME%
echo.
goto :end

:: Functions
:prepend @varname @value
set %1=%2 !%1!
exit /B 0
:end
pause

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM