function - 批处理 - 如何从批处理文件中返回一个值?

标签 function batch-file return

我知道如何从同一个批处理文件中的函数返回值,但我发现从不同的批处理文件返回值时存在一些问题。下面是一个例子:

文件 1.cmd

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

set number=1
call 2.cmd

echo. %number%

ENDLOCAL
exit /B

文件 2.cmd
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

ENDLOCAL & set number=2
exit /B

而且输出还是1,有什么解决办法吗?

最佳答案

LittleBobbyTables 走在正确的轨道上。

您使用两个 SETLOCAL 但只有 1 个 ENDLOCAL 会导致设置变量,但随后定义丢失,因为当批处理在 EXIT/B 处退出时有一个额外的隐式 ENDLOCAL。每当批处理或功能终止时,所有 SETLOCAL 都会结束。在设置值之前,您的代码只需要一个额外的 ENDLOCAL。

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

ENDLOCAL & ENDLOCAL & set number=2
exit /B

但是很少需要 enableExtensions,因为默认情况下扩展总是启用的。您应该能够删除 SETLOCAL ENABLEEXTENSIONS 并使用单个 ENDLOCAL。

如果由于某种原因你确实需要启用扩展,那么你可以在一个 SETLOCAL 上使用这两个选项,但仍然只需要一个 ENDLOCAL
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

ENDLOCAL & set number=2
exit /b

关于function - 批处理 - 如何从批处理文件中返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12018328/

相关文章:

Java如何返回两个变量?

php - Woocommerce 返回价格未正确显示

javascript - 为什么这个函数返回一个空数组?

jquery - 在 jquery 函数中使用 href 作为 var

php - echo 和 return 打印不同的值

php exec 如何查看进度

javascript - 函数中的代码在函数中不会运行。如果在函数外部编写则有效

batch-file - 指定执行批处理文件时命令提示符的大小

batch-file - 在批处理参数 CALL 中传递百分号

batch-file - 如何将文件输出到2个不同的文件夹