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