jjzjj

endlocal

全部标签

windows - 在 Batch 的 endlocal 之后保留变量

我有一个文件夹结构,例如C:\Temp\,里面有很多文件夹和文件,每个文件夹里都有一个“callme.bat”。我想创建一个所谓的main.bat,它在主窗口中一个接一个地调用callme文件。但是有一个问题,在callme文件中有一些包含“!”的回声。标记对我来说是什么问题。我意识到setlocal-endlocal组合的问题,因为批处理脚本想要解释“!”内的消息。标记,所以我必须使用endlocal,但如果我这样做了,我将无法运行callmebats。callme.bat@echooffecho!!!hiddenmessage!!!nothiddenmessagepausemain

windows - 每次批处理脚本运行后如何清除变量?

似乎因为我在批处理脚本中使用SET来声明我的变量,所以如果我在cmd中多次运行它,变量值将持续存在,除非我明确地重置它们。在不关闭CMD的情况下,我是否必须使用setlocal和endlocal来确保一次运行中的变量不会持续到另一次运行? 最佳答案 是的,你应该使用SETLOCAL。这将本地化任何更改,以便在发出ENDLOCAL后恢复旧环境。当所有脚本处理完成并且您返回到命令行上下文时,将为每个事件的SETLOCAL发出一个隐式的ENDLOCAL。无需显式发出ENDLOCAL。此外,如果您的脚本(或例程)被调用,那么当CALL完成时