[英]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.