标题: [其他] 批处理局部变量获取的问题 [打印本页]
作者: yiwuyun 时间: 2014-11-25 19:25 标题: 批处理局部变量获取的问题
- @echo off
- setlocal EnableDelayedExpansion
- setlocal ENABLEEXTENSIONS
- setlocal
- set /a m=0
- set /a n=5
- call :EchoN
- echo !m!
- echo !n!
- endlocal
- exit /b
- @echo on
-
- :EchoN
- setlocal
- set /a n=2
- for /l %%a in (1,1,5) do (
- set /a n=!n!*2
- )
- set /a m=!n!
- endlocal
- exit /b 0
复制代码
我想在主过程中获取 :EchoN中变量m 的值。除了用输出到文件然后再输入之外,还有没什么更好的办法。也就是echo !m! 是显示EchonN中的那个m的值。
作者: CrLf 时间: 2014-11-25 20:02
本帖最后由 CrLf 于 2014-11-25 22:09 编辑
- @echo off
- setlocal EnableDelayedExpansion
- setlocal ENABLEEXTENSIONS
- setlocal
- set /a m=0
- set /a n=5
- call :EchoN
- set n=%errorlevel%
- echo !m!
- echo !n!
- endlocal
- exit /b
- @echo on
-
- :EchoN
- setlocal
- set /a n=2
- for /l %%a in (1,1,5) do (
- set /a n=!n!*2
- )
- set /a m=!n!
- endlocal&exit /b %m%
复制代码
作者: CrLf 时间: 2014-11-25 20:02
- @echo off
- setlocal EnableDelayedExpansion
- setlocal ENABLEEXTENSIONS
- setlocal
- set /a m=0
- set /a n=5
- call :EchoN
- echo !m!
- echo !n!
- endlocal
- exit /b
- @echo on
-
- :EchoN
- set /a n=2
- for /l %%a in (1,1,5) do (
- set /a n=!n!*2
- )
- set /a m=!n!
- exit /b 0
复制代码
作者: yiwuyun 时间: 2014-11-25 21:43
谢谢,也许我没表达清楚,EchoN中的setlocal endlocal不能去掉。主过程中的setlocal也不能去掉。我是要想在过程很多的时候可以随意使用局部变量n,而不改其他过程的n.但是又要能把子过程中的局部变量m值传到主过程中或者其他过程中。
作者: CrLf 时间: 2014-11-25 22:10
回复 4# yiwuyun
那就看 2 楼的方案,不过 exit /b 的办法只能用于数字
作者: CrLf 时间: 2014-11-25 22:12
本帖最后由 CrLf 于 2014-11-25 23:01 编辑
再来一种通用的:- @echo off
- setlocal EnableDelayedExpansion
- setlocal ENABLEEXTENSIONS
- setlocal
- set /a m=0
- set /a n=5
- call :EchoN
- set n=%errorlevel%
- echo !m!
- echo !n!
- endlocal
- exit /b
- @echo on
-
- :EchoN
- setlocal
- set /a n=2
- for /l %%a in (1,1,5) do (
- set /a n=!n!*2
- )
- set /a m=!n!
- for /f "delims=" %%a in ("m=!m!") do endlocal&set "%%a"
- exit /b
复制代码
作者: qzwqzw 时间: 2014-11-25 22:36
:EchoN中的endlocal改为
endlocal & set m=%m%
作者: terse 时间: 2014-11-25 23:18
楼上正解- :EchoN
- setlocal
- set /a n=2
- for /l %%a in (1,1,5) do (
- set /a n=!n!*2
- )
- (
- endlocal
- set m=%n%
- )
- exit /b 0p
复制代码
作者: yiwuyun 时间: 2014-11-26 09:26
谢谢各位,很好。这就是我想要的。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |