簡體   English   中英

如何從批處理文件中的函數返回值?

[英]How do I return a value from a function in a batch file?

我有以下批處理文件

@echo off
setlocal EnableDelayedExpansion
for /f "delims==" %%J in (File_List.txt) do (
call :setDate %%J MYD
echo/Date is: %MYD%
)
endlocal &goto :eof

:setDate
SETLOCAL ENABLEEXTENSIONS
echo %1
echo %~2
set NAME=%1
set NAME=%NAME:~-11%
echo %NAME%
echo %~2
endlocal&set %2=%NAME%&goto :eof

但是File_List.txt包含file2012-05.csv

我懂了

file2012-05.csv
MYD
2012-05.csv
MYD
Date is:

我實際上如何獲得函數setDate返回我想要的值?

由於無法從您的腳本中了解您想要實現的目標,因此我(為了完整性)答復原始主題:從函數返回值。

這是我的方法:

@echo off

set myvar=
echo %myvar%
call :myfunction myvar
echo %myvar%
goto :eof

:myfunction
set %1=filled
goto :eof

結果是:

empty 
filled

批處理解釋器在解析時評估%MYD% ,當時為空。 這就是為什么您需要延遲擴展 更改此行:

echo/Date is: %MYD%

對此:

echo/Date is: !MYD!

它會像您想要的那樣工作,因為它然后告訴解釋器在運行時評估MYD

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM