批处理集锦——(2)⾃定义函数涉及知识点:
  1、如何定义⼀个函数
  2、如何传递参数
  3、如何调⽤?
  4、如何获取返回值
  5、GOTO:EOF 和 exit /b 0的区别
  6、如何在字符串替换的时候处理变量
  7、具体实例
正⽂部分:
1、定义
:functionname
rem 参数是 %0,%1,...%n
  rem todo
goto:eof
2、参数和调⽤
call:functionname参数1(对应%1),参数2(对应%2),...参数n(对应%n)
4、关于返回值,直接修改全局变量,批处理是没有函数返回值的
5、关于goto:eof和exit /b 0的区别
rem  goto:eof 相当于函数的} 结尾标记,返回到调⽤者位置
rem  exit /b 0  结束当前cmd,返回exitCode 0
6、字符串替换中处理变量
1set str_find=%1
2set str_replace=%2
3set str_string=%3
4
5::call命令会对其参数进⾏扩展
6::call set "strok=%%str_string:!str_find!=!str_replace!%%"
7
8::也可以启⽤变量延迟来实现
9::@echo off&setlocal enabledelayedexpansion
字符串函数title作用
10::set "var=!var:%mat%=!
11
12set "strok=!str_string:%1=%2!"
7、具体实例
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
title bat function
::author:lovelp
::link:wwwblogs/lovelp/p/5720046.html
set str1="this is a old string"
set str2="this is a new string"
echo=
::=============================================
::设置变量strok,全局,⽤于实现函数返回值
set strok=" "
echo函数调⽤语句为: call:func1 this is a old string,this is a new string
echo函数结束参数,分别为 %%0,%%1,%%2,...,%%n
call:func1 %str1%,%str2%
echo以上结果是解释函数参数
echo.
echo下⾯才是重点,调⽤⾃定义函数实现字符串替换
echo.
echo call:fun_replace old,旧的,this is a old string
call:fun_replace old,旧的,%str1%
echo.
echo↓↓↓↓调⽤结束,显⽰结果↓↓↓↓↓↓↓
echo %strok%
::=============================================
exit /b 0
:fun_replace
set str_find=%1
set str_replace=%2
set str_string=%3
echo查的字符串是: !str_find!
echo最终替换后的字符串是: !str_replace!
echo字符串主体是: %str_string%
:
:call命令会对其参数进⾏扩展
::call set "strok=%%str_string:!str_find!=!str_replace!%%"
::也可以启⽤变量延迟来实现@echo off&setlocal enabledelayedexpansion
::set "var=!var:%mat%=!
set "strok=!str_string:%1=%2!"
GOTO:EOF
::exit /b 0
REM (1) 运⾏ GOTO :EOF 后, CMD 返回并将等待下⼀条命令.
REM (2) 运⾏ EXIT 后, CMD 将直接关闭并返回到曾启动 的程序或返回到”资源管理器”. REM (3) 运⾏ EXIT /B 后, CMD 将直接关闭并返回到曾启动 的程序或返回到”资源管理器”. ::函数名 :func1  带冒号哦
::参数1,%0  就是函数名本⾝  :func1
::函数2、3...n  就是常见的形参了
:func1
echo %%0 is %0
echo %%1 is %1
echo %%2 is %2
GOTO:EOF
pause

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。