首页 > 其他分享 >无涯教程-批处理 - Local Variables in Functions函数

无涯教程-批处理 - Local Variables in Functions函数

时间:2023-11-09 19:31:38浏览次数:42  
标签:ENDLOCAL Functions set Outer 函数 Variables 无涯 echo str

函数中的局部变量可用于避免名称冲突,并将变量更改保持在函数本地,首先使用SETLOCAL命令来确保命令处理器备份所有环境变量,可以通过调用ENDLOCAL命令来恢复变量,当到达批处理文件的末尾时,即通过调用GOTO:EOF,将自动调用ENDLOCAL。

使用SETLOCAL对变量进行本地化允许在函数内自由使用变量名,而不必担心与函数外使用的变量名冲突。

以下示例显示了如何在函数中使用局部变量。

@echo off
set str=Outer
echo %str%
CALL :SetValue str
echo %str%
EXIT /B %ERRORLEVEL%
:SetValue
SETLOCAL
set str=Inner
set "%~1=%str%"
ENDLOCAL
EXIT /B 0

在上面的程序中,变量" str"位于函数SetValue中。因此,即使将str值返回给主函数,也不会将主函数中的str值替换为从函数返回的值。

上面的命令产生以下输出。

Outer
Outer

参考链接

https://www.learnfk.com/batch-script/batch-script-local-variables-functions.html

标签:ENDLOCAL,Functions,set,Outer,函数,Variables,无涯,echo,str
From: https://blog.51cto.com/u_14033984/8285256

相关文章

  • 无涯教程-批处理 - Functions with Return Values函数
    函数可以通过简单地传递变量名称来使用返回值,这些变量名称将在调用函数时保存返回值,如下所示Call:function_namevalue1,value2…valuen使用set命令和tilde(〜)字符以及参数的位置编号在函数中设置返回值。下面的示例演示如何使用返回值调用函数。@echooffSETLOCALCALL......
  • 无涯教程-批处理 - Classic for 循环 Implementation函数
    以下是大多数编程语言中可用的经典"for"语句。for(variabledeclaration;expression;Increment){statement#1statement#2…}批处理脚本语言没有类似于上述语法的直接"for"语句,但仍然可以使用if语句和标签来实现经典的"for"循环语句。让无涯教程看看批处理......
  • 无涯教程-批处理 - For 语句 - List Implementations函数
    "for"构造为批处理文件提供循环功能,以下是用于处理值列表的"for"语句的常见结构。FOR%%variableINlistDOdo_something经典的"for"语句由以下部分组成-variable变量    -对于整个循环,此步骤仅执行一次,并用于声明将在循环中使用的任何变量,在批处理脚本中变量声......
  • 无涯教程-批处理 - While 语句 Implementation函数
    批处理脚本中没有直接的while语句,但是无涯教程可以使用if语句和标签很容易地实现此循环。下图显示了此循环的图解说明。while实现的第一部分是设置计数器,这些计数器将用于控制对"if"条件的判断,然后,无涯教程定义标签,该标签将用于体现while循环实现的整个代码,"if"条件将计算表......
  • 无涯教程-批处理 - Nested If 语句函数
    有时,要求彼此之间嵌入多个"if"语句。以下是此声明的一般形式。if(condition1)if(condition2)do_something因此,仅当满足condition1和condition2时,才会执行do_something块中的代码。以下是如何使用嵌套if语句的示例。@echooffSET/Aa=5SET/Ab=10if%a%==5if%b......
  • 无涯教程-批处理 - Right String函数
    这用于从字符串末尾提取字符。RightString-示例@echooffsetstr=Thismessageneedschanged.echo%str%setstr=%str:~-8%echo%str%关于上述程序,需要注意的关键是,使用〜-"要提取的字符数"运算符来提取字符串的右边。上面的命令产生以下输出。Thismessagene......
  • 无涯教程-批处理 - Replace a String函数
    要将子字符串替换为另一个字符串,请使用字符串替换功能。ReplaceaString-示例@echooffsetstr=Thismessageneedschanged.echo%str%setstr=%str:needs=has%echo%str%关于上述程序,需要注意的关键是,该示例通过语句%str:needs=has%用字符串"has"替换了"needs"......
  • 无涯教程-批处理 - Remove All Spaces函数
    这用于通过替换删除字符串中的所有空格。RemoveAllSpaces-示例@echooffsetstr=Thisstringhasalotofspacesecho%str%setstr=%str:=%echo%str%关于上述程序,需要注意的关键是::=运算符用于删除字符串中的所有空格。上面的命令产生以下输出。Th......
  • 无涯教程-批处理 - Remove函数
    字符串替换功能还可用于从另一个字符串中删除子字符串。Remove-示例@echooffsetstr=Batchscriptsiseasy.Itisreallyeasy.echo%str%setstr=%str:is=%echo%str%关于上述程序,需要注意的关键是,使用:'stringtoberemoved'=command从字符串中删除了"is"一词......
  • 无涯教程-批处理 - Mid String函数
    这用于通过字符串中字符的位置提取子字符串。MidString-示例@echooffsetstr=HelloLearnfkecho%str%setstr=%str:~5,10%echo%str%关于上述程序,需要注意的关键是〜5,10用于指定需要显示的字符,在这种情况下,无涯教程希望showcharacter5到10。上面的命令产生以下......