Function 将参数批传递给函数
我正在尝试创建一个简单的批处理脚本,它有一个带单参数的过程。根据internet上的一些来源,我创建了以下示例代码:Function 将参数批传递给函数,function,batch-file,Function,Batch File,我正在尝试创建一个简单的批处理脚本,它有一个带单参数的过程。根据internet上的一些来源,我创建了以下示例代码: :logMessage @echo on echo Hi, %1 @echo off goto :eof call:logMessage "Izomorphius" 但是我没有得到我所期望的输出-只打印“Hi”,没有参数。我做错了什么?这是一个简单的版本,可以工作 @echo off call :logMessage "Izomorphius" goto :
:logMessage
@echo on
echo Hi, %1
@echo off
goto :eof
call:logMessage "Izomorphius"
但是我没有得到我所期望的输出-只打印“Hi”,没有参数。我做错了什么?这是一个简单的版本,可以工作
@echo off
call :logMessage "Izomorphius"
goto :eof
:logMessage
echo Hi, %1
请注意,它实际上会打印伊佐莫菲乌斯周围的引号,但如果不需要,只需删除它们即可。这里是一个简单的版本
@echo off
call :logMessage "Izomorphius"
goto :eof
:logMessage
echo Hi, %1
请注意,它实际上会打印Izomorphius周围的引号,但如果不需要,只需删除它们。我认为所有批处理函数都需要在文件末尾定义,在任何调用代码之后
call:logMessage "Izomorphius"
goto :eof
:: Start function definitions ---
:logMessage
@echo on
echo Hi, %1
@echo off
goto :eof
我认为所有批处理函数都需要在文件末尾定义,在任何调用代码之后
call:logMessage "Izomorphius"
goto :eof
:: Start function definitions ---
:logMessage
@echo on
echo Hi, %1
@echo off
goto :eof
您只需要调整代码:
goto main & :: Add this line...
:logMessage
@echo on
echo Hi, %1
@echo off
goto :eof
:main & :: ...and this line.
call:logMessage "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
这段代码有缺陷,但这是另一个技巧:
@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
“我认为所有批处理函数都需要在文件末尾定义”-不,批处理确实很旧。函数可以在文件中的任何地方定义。“我认为所有批处理函数都需要在文件末尾定义”-不,批处理确实很旧。函数可以在文件中的任何位置进行定义。代码的唯一问题是,当前的执行永远不会到达
call
语句。要使其正常工作,请在最顶部添加一行goto main
,并在call
语句上方添加一行::main
。代码的唯一问题是,当前的执行永远不会到达call
语句。要使其正常工作,请在最顶部添加一行goto main
,并在call
语句上方添加一行::main
。如果要在%1参数中传递多个单词,例如“Izomorphius Smith”,则可能需要使用引号。在这种情况下,如果要在%1参数中传递多个单词,例如“Izomorphius Smith”,则可以使用echo Hi、%%1
删除引号。在这种情况下,要删除引号,可以使用echo Hi、%~1