簡體   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