私は、私が望むように正確に動作する次のコードを書きました:
@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
私が考えることができる唯一のことは、 %* を使用して区切り文字を一意のものに変更することですが、可能であればそれを避けたいと思います.