如何通过批处理循环拆分字符串

时间:2010-09-19 06:25:22

标签: string batch-file

一般来说,我想对循环中的某些变量做一些操作,变量的数量可能会改变,我尝试了这样的样本:

设置header1 = appdef1.h
set header2 = appdef2.h
set header3 = appdef3.h
set headers =“%header1 %% header2 %% header3%”
for / f“delims =”%% i in(%headers%)do echo %% i
暂停

虽然它只输出“appdef.h”,令人困惑!

2 个答案:

答案 0 :(得分:1)

得到解决方案:

@echo off
set header1=appdef1.h
set header2=appdef2.h
set header3=appdef3.h
set headers= "%header1% %header2% %header3%"

for /f "tokens=* delims= " %%i in (%headers%) do call :lable %%i
goto END

:lable
if "%1"=="" (
echo the end
goto END
)

echo %1
shift
goto lable

:END
pause

答案 1 :(得分:1)

这应该做你想要的:

set header1=appdef1.h
set header2=appdef2.h
set header3=appdef3.h
set headers=%header1% %header2% %header3%
for %%i in (%headers%) do echo %%i
pause

您的原始代码仅将1参数作为%% i传递,您的修补程序将它们作为%1,%2%3传递给:lable,然后将它们拆分出来。

我的代码用每个参数调用echo %% i一次。

c:\>set header1=appdef1.h 

c:\>set header2=appdef2.h 

c:\>set header3=appdef3.h 

c:\>set headers=appdef1.h appdef2.h appdef3.h 

c:\>for %i in (appdef1.h appdef2.h appdef3.h) do echo %i 

c:\>echo appdef1.h 
appdef1.h

c:\>echo appdef2.h 
appdef2.h

c:\>echo appdef3.h 
appdef3.h

c:\>pause
Press any key to continue . . . 
相关问题