做了个普通的Array..还没改成专用的形式嘿嘿,好心人帮助下咯
也没提供特殊字符&输入错误处理
提供以下函数:
CreateArray 创建一个数组,注意:从_1开始
GetLength 获取数组长度
SetAt 设置特定位置元素
GetAt 获取特定位置元素
MapArray 对整个(或指定多个位置)数组执行相同操作
EchoArray 以指定方式输出整个元素
InsertAt 在指定位置后插入一个元素
InsertArray 在指定位置后插入一个以CreateArray创建的数组
RemoveArray 删除指定位置后指定个元素
RemoveAll 清空数组
IsEmpty 若数组(不)为空,执行指定操作
PushArray 在数组末尾增加一个元素
PopArray 弹出数组末尾的一个元素
ReadArray 从文件(或控制台输入)读取数组元素
FindArray 在数组里查找其中一个指定元素- CreateArray <name> <size> <defaultvalue>
- example:
- call :CreateArray array 10 %%%%i
-
- GetLength <name> <result>
- example:
- call :GetLength array length
-
- SetAt <name> <index> <value>
- example:
- call :SetAt array 6 我是第六个元素
-
- GetAt <name> <index> <result>
- example:
- call :GetAt array 6 value
-
- MapArray <name> <index> <flag>
- example:
- call :MapArray array "1 2 4 6" "set/a$item$+=$index[code]CreateArray <name> <size> <defaultvalue>
- example:
- call :CreateArray array 10 %%%%i
-
- GetLength <name> <result>
- example:
- call :GetLength array length
-
- SetAt <name> <index> <value>
- example:
- call :SetAt array 6 我是第六个元素
-
- GetAt <name> <index> <result>
- example:
- call :GetAt array 6 value
-
- MapArray <name> <index> <flag>
- example:
- call :MapArray array "1 2 4 6" "set/a$item$+=$index$"
- rem 以上代码将array中第1个数据加1,第2个数据加2,第4个数据加4,第6个数据加6
- call :MapArray array All "fsutil file createnew $value$.txt"
-
- EchoArray <name> <flag>
- example:
- call :EchoArray array "第$index$个元素是$value$"
-
- InsertAt <name> <index> <value>
- example:
- call :InsertAt array 0 我是第一个元素咯
-
- InsertArray <name> <index> <array>
- example:
- call :CreateArray array 10 %%%%i
- call :CreateArray array2 4 新%%%%i
- call :InsertArray array 3 array2
-
- RemoveArray <name> <index> <count>
- example:
- call :RemoveArray array 3 2
- rem 以上代码删去第4,5个元素
-
- RemoveAll <name>
- example:
- call :RemoveAll array
-
- IsEmpty <name> <flag> {not}
- example:
- call :IsEmpty array 空了空了
- call :IsEmpty array 里面还有东西呢 not
-
- PushArray <name> <value>
- example:
- call :PushArray array 我是新人
-
- PopArray <name> <result>
- example:
- call :PopArray array Result
-
- ReadArray <name> <file>|<"" <tip> <endflag>>
- example:
- call :ReadArray array input.txt
- call :ReadArray array "" Input: " "
- rem endflag即结束标志...以上代码表示输入的是空格时结束
-
- FindArray <name> <result> <findindex> <findstring>
- example:
- call :FindArray array result 2 找我啊
- rem 以上代码查找array数组中第二个"找我啊",没找到返回$NULL$
复制代码 quot;
rem 以上代码将array中第1个数据加1,第2个数据加2,第4个数据加4,第6个数据加6
call :MapArray array All "fsutil file createnew $value$.txt"
EchoArray <name> <flag>
example:
call :EchoArray array "第$index$个元素是$value$"
InsertAt <name> <index> <value>
example:
call :InsertAt array 0 我是第一个元素咯
InsertArray <name> <index> <array>
example:
call :CreateArray array 10 %%%%i
call :CreateArray array2 4 新%%%%i
call :InsertArray array 3 array2
RemoveArray <name> <index> <count>
example:
call :RemoveArray array 3 2
rem 以上代码删去第4,5个元素
RemoveAll <name>
example:
call :RemoveAll array
IsEmpty <name> <flag> {not}
example:
call :IsEmpty array 空了空了
call :IsEmpty array 里面还有东西呢 not
PushArray <name> <value>
example:
call ushArray array 我是新人
PopArray <name> <result>
example:
call :PopArray array Result
ReadArray <name> <file>|<"" <tip> <endflag>>
example:
call :ReadArray array input.txt
call :ReadArray array "" Input: " "
rem endflag即结束标志...以上代码表示输入的是空格时结束
FindArray <name> <result> <findindex> <findstring>
example:
call :FindArray array result 2 找我啊
rem 以上代码查找array数组中第二个"找我啊",没找到返回$NULL$[/code]- 示例:
- 创建50个文件夹
- call :CreateArray array 50 %%%%i
- call :MapArray array "md $value[code]示例:
- 创建50个文件夹
- call :CreateArray array 50 %%%%i
- call :MapArray array "md $value$"
- 查找hello.txt文件中第二个hello
- call :CreateArray array 1 ""
- call :ReadArray array hello.txt
- call :FindArray array re 2 hello
- echo %re%
复制代码 quot;
查找hello.txt文件中第二个hello
call :CreateArray array 1 ""
call :ReadArray array hello.txt
call :FindArray array re 2 hello
echo %re%[/code]- @echo off&setlocal enabledelayedexpansion
- exit
- :CreateArray
- set %~1_class=Array
- set %~1_length=%~2
- for /l %%i in (1,1,%~2) do set "%~1_%%i=%~3"
- goto :eof
- :GetLength
- set %~2=!%~1_length!
- goto :eof
- :SetAt
- if %~2 gtr 0 if %~2 leq !%~1_length! set "%~1_%~2=%~3"
- goto :eof
- :GetAt
- set %~3=$NULL$&if %~2 gtr 0 if %~2 leq !%~1_length! set "%~3=!%~1_%~2!"
- goto :eof
- :EchoArray
- set out=%~2
- for /l %%i in (1,1,!%~1_length!) do set "t=!out:$index$=%%i!"&call,set "t=%%t:$value$=!%~1_%%i!%%"&echo !t!
- goto :eof
- :MapArray
- set "out=%~3"
- set fex=for %%i in (%~2)
- if "%~2"=="All" set "fex=for /l %%i in (1,1,!%~1_length!)"
- %fex% do set "t=!out:$item$=%~1_%%i!"&set "t=!t:$index$=%%i!"&call,set "t=%%t:$value$=!%~1_%%i!%%"&!t!
- goto :eof
- :InsertAt
- set/ab=%~2+1
- for /l %%i in (!%~1_length!,-1,%b%) do set/as=%%i+1&set "%~1_!s!=!%~1_%%i!"
- set/a%~1_length+=1
- set "%~1_%b%=%~3"
- goto :eof
- :InsertArray
- for /l %%i in (!%~1_length!,-1,%~2) do set/as=%%i+!%~3_length!&set "%~1_!s!=!%~1_%%i!"
- for /l %%i in (1,1,!%~3_length!) do set/as=%%i+%~2&set "%~1_!s!=!%~3_%%i!"
- set/a%~1_length+=%~3_length
- goto :eof
- :RemoveArray
- set/ab=%~2+1
- set/ae=%~1_length-%~3
- for /l %%i in (%b%,1,%e%) do set/as=%%i+%~3&call,set "%~1_%%i=%%%~1_!s!%%"
- set/a%~1_length-=%~3
- goto :eof
- :RemoveAll
- set %~1_length=0
- goto :eof
- :IsEmpty
- if %~3 "!%~1_length!"=="0" %2
- goto :eof
- :PushArray
- set/a%~1_length+=1
- set "%~1_!%~1_length!=%~2"
- goto :eof
- :PopArray
- set "%~2=%~1_!%~1_length!"
- set/a%~1_length-1
- goto :eof
- :ReadArray
- set %~1_length=0
- if "%~2" neq "" (for /f "delims=" %%i in (%2) do set/a%~1_length+=1&set "%~1_!%~1_length!=%%i")&goto :eof
- set/pt=%~3
- :k
- if "!t!"=="%~4" goto :eof
- set/a%~1_length+=1
- set %~1_!%~1_length!=!t!
- set/pt=%~3
- goto k
- :FindArray
- set %~2=$NULL$&set b=0
- for /l %%i in (1,1,!%~1_length!) do if "!%~1_%%i!"=="%~4" set/ab+=1&if !b!==%~3 set %~2=%%i&goto :eof
- goto :eof
复制代码 搞定...回家睡睡~ |