0

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

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

call:logMessage "Izomorphius"

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

4

4 回答 4

3

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

call:logMessage "Izomorphius"
goto :eof

:: Start function definitions ---

:logMessage
   @echo on
   echo Hi, %1
   @echo off
   goto :eof
于 2012-09-26T13:40:23.927 回答
1

这是一个有效的简化版本

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

:logMessage
echo Hi, %1

请注意,它实际上会打印 周围的引号Izomorphius,但如果您不想要它们,只需将其删除。

于 2012-09-26T13:30:29.683 回答
1

您的代码只需要调整:

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

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

根据我之前的评论。

于 2012-09-27T16:37:54.060 回答
0

这段代码有问题,但这是另一个技巧:

@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
于 2012-10-25T22:47:39.070 回答