我编写了以下代码,它完全按照我想要的方式工作:
@echo off
setlocal enabledelayedexpansion
set /a i=0
set in="This is line 1", "This is line 2"
for %%h in (%in%) do (
set /a i+=1
set "val[!i!]=%%h"
)
set out=
for /l %%n in (1,1,!i!) do (
set out=!out! !val[%%n]! ^& vbcrlf ^& _)
echo !out:~1,-12!
它获取 %in% 变量的值并将每个逗号分隔的行读入数组的一个元素,然后对其进行一些字符串连接并吐出一个新字符串。现在,当我尝试将其转换为函数时,它失败了,因为 %2 被解析为参数。我需要将 %2 解析为具有可变数量值的单个逗号分隔字符串。这个简单的测试不起作用:
call :Test Title "This is line 1","This is line 2" "arg3"
exit /b
:Test arg1 arg2 arg3
set /a i=0
for %%h in (%2) do (
set /a i+=1
set "val[!i!]=%%h"
)
set out=
for /l %%n in (1,1,!i!) do (
set out=!out! !val[%%n]! ^& vbcrlf ^& _)
echo %1 !out:~1,-12! %3
exit /b
我唯一能想到的就是使用 %* 并将分隔符更改为独特的东西,但如果可能的话,我宁愿避免这种情况。