支持超8个I/O参数的Batch通用N参数宏模板求校验与优化建议
Batch 支持超8个任意数量I/O参数的通用宏实现
我编写了一款可支持最多N个I/O参数(参数数量可超过8个)的通用宏,现将该实现分享出来,一方面希望大家帮忙校验功能正确性,另一方面也希望收集大家的建议对其进行优化。
具体代码如下:
:: 定义回车符CR for /f %%C in ('copy /Z "%~dpf0" nul') do set "CR=%%C" :: 定义换行符LF set LF=^ :: 上面必须留2个空行,不要删除 :: 定义带续行功能的换行标识 :: 旧版换行定义写法更复杂:set ^"\n=^^^%LF%%LF%^%LF%%LF%^^" :: 以下是新版简化写法 (set \n=^^^ %=EMPTY=% ) set @{macroNparIOTemplate}=for %%. in (1 2) do if %%.==2 (for %%L in ("!LF!") DO ( %\n% set /a "I=1" %\n% for /f "tokens=* delims=" %%1 in ("!args: =%%~L!") do (%\n% set "par.!I!=!%%1!" %\n% set /a "I+=1" %\n% )%\n% %= 宏逻辑开始位置 =% %\n% %= 宏逻辑结束位置 =% %\n% endlocal ^&(%\n% %= 以下是需要跨endlocal屏障传递的输出参数 =% %\n% set "out1=value1"%\n% set "out2=value2"%\n% )%\n% )) else setlocal EnableDelayedExpansion ^& set args= :: 宏调用示例 %@{macroNparIOTemplate}% inPar1 inPar2 ... inParX ... outPar1 outPar2 ... outParY
内容的提问来源于stack exchange,提问作者Andrea Rossetti
相关产品推荐
相关产品推荐

