我有一個批處理函式,我需要從中回傳一個值。以下是腳本:
@echo off
call :Mode mode1
echo mode is %mode1%
:Mode
setlocal enabledelayedexpansion
set count=0
for /f "tokens=*" %%x in (map.txt) do (
set /a count =1
set var[!count!]=%%x
)
for /f "tokens=2 delims=: " %%A in ("%var[2]%") Do (
set mode=OPEN
)
IF %mode%==OPEN (
echo coming into open
set %1=OPEN
echo %mode1%
) ELSE (
echo coming into shorted
set %1=SHORTED
echo %mode1%
)
EXIT /B 0
echo mode is %mode1%不列印任何東西。有什么幫助嗎?我已經set mode=OPEN為測驗目的進行了硬編碼。
uj5u.com熱心網友回復:
每個exit,exit /b或goto :eof隱含地做一個endlocal,所以你需要一個技巧讓你的變數%1在一個endlocal. endlocal & set ... & goto :eof這樣做的訣竅是因為整行都被一次性決議:
@echo off
call :Mode mode1
echo mode is %mode1%
goto :eof
:Mode
setlocal enabledelayedexpansion
set "mode=OPEN"
IF "%mode%" == "OPEN" (
echo coming into open
endlocal&set "%1=OPEN"&goto :eof
) ELSE (
echo coming into shorted
endlocal&set "%1=SHORTED"&goto :eof
)
出于同樣的原因,echo %mode1%在您的子程式中不列印變數。
注意:我將語法更改set為if推薦的參考語法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/494649.html
上一篇:將具有相同文本的數字相加
下一篇:如何批量驗證日期的格式?
