再附上几个函数库做参考:
判断文件夹是否为空的函数:
- 1.0
- Ritchie Lawrence
- 不需要其他库的支持
- isDirEmpty标签
- 定义了isDirEmpty标签,用于判断文件夹是否为空
- 用法 call :isDirEmpty "Directory"&& Command1 || Command2
- Directory是文件夹路径,可用短名。为空时,会执行Command1,否则执行Command2
- 使用本库的时候可以给参数外加上双引号(如"C:\Windows"),本库会自动处理
- 使用本库需要保留isDirEmpty标签,i变量
- //**//
- :isDirEmpty
- setlocal enableextensions
- dir/ad "%~1" >nul 2>nul||(goto :EOF)
- set i=0
- for /f %%a in ('dir /a/b "%~1" 2^>nul') do set /a "i+=1"
- if %i%==0 (ver>nul) else (md;2>nul)
- endlocal
- goto :EOF
复制代码
声明一个数组:
- 1.0
- BatCodeer
- 不需要其他库的支持
- NewArray标签,arrays贮存变量
- 定义了NewArray标签,用于定义新的数组,支持1-3维度。
- 用法:call :NewArray "Array" "Var"
- Array是形如array_2的字串符,其中array是数组名,2是一维长度。Var是数组的缺省值。定义二维数组则是形如array_2_2,三维则是array_2_2_2。
- 例如call :NewArray "array_2_2" "0",执行后变量array_1_1、array_1_2、array_2_1、array_2_2的值均为0
- 使用本库的时候可以给参数外加上双引号(如"array_2_2"),本库会自动处理
- 使用本库需要保留NewArray标签,arrays变量
- //**//
- :NewArray
- if "%~1"=="" goto :EOF
- for /f "eol= tokens=1-4 delims=_" %%1 in ("%~1") do (
- if "%%~2"=="" goto :EOF
- set arrays=%arrays%%%1;
- if "%%~3"=="" (
- for /l %%a in (1,1,%%2) do (
- set "%%1_%%a=%~2"
- )
- goto :EOF
- ) else (
- if "%%~4"=="" (
- for /l %%a in (1,1,%%2) do (
- for /l %%b in (1,1,%%3) do (
- set "%%1_%%a_%%b=%~2"
- )
- )
- ) else (
- for /l %%a in (1,1,%%2) do (
- for /l %%b in (1,1,%%3) do (
- for /l %%c in (1,1,%%4) do (
- set "%%1_%%a_%%b_%%c=%~2"
- )
- )
- )
- )
- )
- )
- goto :EOF
复制代码
获得数组的维数:
- 1.0
- BatCodeer
- 不需要其他库的支持
- GetArrayWides标签
- 定义了GetArrayWides标签,用于获得数组的维度
- 用法 call :GetArrayWides ArrayName Variable
- ArrayName是数组的名称(例如数组array_10_10,名称为array),数组可以是隐式或显式定义。数组的维度将保存在Variable变量里
- 使用本库的时候可以给参数外加上双引号(如"array"),本库会自动处理
- 使用本库需要保留GetArrayWides标签
- 使用本库需要开启变量延迟
- //**//
- :GetArrayWides
- setlocal enableextensions
- set "ArrayWides=%~1"
- set "AWs=0"
- for /l %%a in (1,1,3) do (
- set "ArrayWides=!ArrayWides!_1"
- if defined !ArrayWides! set "AWs=%%a"
- )
- endlocal&set "%~2=%AWs%"
- goto :EOF
复制代码
获得数组某一维上有多少个数据:
- 1.0
- BatCodeer
- 需要GetArrayWides库
- GetArrayWideNum、GetArrayWideNum_1标签
- 定义了GetArrayWideNum标签,用于获得数组维度中的数据个数
- 用法 call :GetArrayWideNum ArrayName ArrayWide Variable
- ArrayName是数组的名称(例如数组array_10_10,名称为array),数组可以是隐式或显式定义
- ArrayWide是需返回数据个数的数组维度。数组的维度将保存在Variable变量里
- 使用本库的时候可以给参数外加上双引号(如"array"),本库会自动处理
- 使用本库需要保留GetArrayWideNum、GetArrayWideNum_1标签
- 使用本库需要开启变量延迟以及GetArrayWides库
- //**//
- :GetArrayWideNum
- setlocal enableextensions
- call :GetArrayWides "%~1" "AWs"
- if %AWs%==0 (
- endlocal
- set "%~3=0"
- goto :EOF
- )
- if %AWs% lss %~2 (
- endlocal
- set "%~3=0"
- goto :EOF
- )
- set /a "leftn=%~2-1"
- set /a "rightn=%AWs%-%~2"
- for /l %%a in (1,1,%leftn%) do set "left=!left!_1"
- for /l %%a in (1,1,%rightn%) do set "right=!right!_1"
- set /a AWNs=0
- :GetArrayWideNum_1
- set /a AWNs+=1
- if defined %~1%left%_%AWNs%%right% goto GetArrayWideNum_1
- endlocal&set /a "%~3=%AWNs%-1"
- goto :EOF
复制代码
|