我正在尝试创建一个简单的批处理脚本,该脚本具有带单个参数的过程。在互联网上的一些消息来源之后,我创建了以下示例代码:
:logMessage
@echo on
echo Hi, %1
@echo off
goto :eof
call:logMessage "Izomorphius"
但是我没有得到我预期的输出 - 只有“嗨”打印出来,没有参数。我做错了什么?
答案 0 :(得分:3)
我认为所有批处理函数都需要在任何调用代码之后在文件末尾定义。
call:logMessage "Izomorphius"
goto :eof
:: Start function definitions ---
:logMessage
@echo on
echo Hi, %1
@echo off
goto :eof
答案 1 :(得分:1)
这是一个有效的简化版本
@echo off
call :logMessage "Izomorphius"
goto :eof
:logMessage
echo Hi, %1
请注意,它实际上会在Izomorphius
周围打印引号,但如果您不想要它们,请将它们删除。
答案 2 :(得分:1)
您的代码只需要调整:
goto main & :: Add this line...
:logMessage
@echo on
echo Hi, %1
@echo off
goto :eof
:main & :: ...and this line.
call:logMessage "Izomorphius"
根据我之前的评论。
答案 3 :(得分: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