Windows 如何在批处理脚本中解析包含由分隔符分隔的文本的文件中的行

Windows 如何在批处理脚本中解析包含由分隔符分隔的文本的文件中的行,windows,batch-file,Windows,Batch File,下面是我的代码 for /F "tokens=1,2,3 delims=;" %%i in (file.txt) do call :process %%i %%j %%k goto :ENDPOINT :process echo %1 echo %2 echo %3 file.txt包含 SELECT * FROM ABC;DBNAME;TABLENAME SELECT * FROM XYZ;DBNAME;TABLENAME SELECT * FROM PQR;DBN

下面是我的代码

for /F "tokens=1,2,3 delims=;" %%i in (file.txt) do call :process %%i %%j %%k    
goto :ENDPOINT

:process    
echo %1    
echo %2
echo %3
file.txt包含

SELECT * FROM ABC;DBNAME;TABLENAME
SELECT * FROM XYZ;DBNAME;TABLENAME
SELECT * FROM PQR;DBNAME;TABLENAME
----------------输出---------------

这是错误的,我希望它是正确的

SELECT * FROM ABC
DBNAME
TABLENAME
有人能指出哪里出了问题吗。

我是批处理脚本新手。

FOR循环delim按预期工作,但您的
调用会打乱您的预期。
这是因为
调用将参数拆分为多个分隔符
;=
为了避免这种情况,您可以引用参数并在以后取消引用

for /F "tokens=1,2,3 delims=;" %%i in (file.txt) do call :process "%%i" "%%j" "%%k"
exit /b

:process
echo %~1
echo %~2
echo %~3
exit /b
for /F "tokens=1,2,3 delims=;" %%i in (file.txt) do call :process "%%i" "%%j" "%%k"
exit /b

:process
echo %~1
echo %~2
echo %~3
exit /b