Loops 通过逗号分隔的文本进行批处理循环
我在DOS批处理中定义了如下lib文件列表:Loops 通过逗号分隔的文本进行批处理循环,loops,batch-file,delimiter,comma,Loops,Batch File,Delimiter,Comma,我在DOS批处理中定义了如下lib文件列表: set libs=MSVCRT.LIB Kernel32.lib User32.lib,^ MSVCRT.LIB Kernel32.lib User32.lib d3d9.lib,^ MSVCRT.LIB Kernel32.lib User32.lib d3d9.lib OpenGL32.lib 我必须根据要创建的可执行文件,将它们中的每一个传递给编译器。现在,我只想知道如何循环并获取这些库列表中的每一个。这就是
set libs=MSVCRT.LIB Kernel32.lib User32.lib,^
MSVCRT.LIB Kernel32.lib User32.lib d3d9.lib,^
MSVCRT.LIB Kernel32.lib User32.lib d3d9.lib OpenGL32.lib
我必须根据要创建的可执行文件,将它们中的每一个传递给编译器。现在,我只想知道如何循环并获取这些库列表中的每一个。这就是我现在拥有的:
setlocal enabledelayedexpansion
for /F "tokens=1* delims=," %%f in ("%LIBRARIIEXTERNE%") do (
if not "%%f" == "" (
echo "F:%%f"
)
if not "%%g" == "" (
echo "G:%%g"
)
)
endlocal
所以,我只把第一个元素和最后两个元素连接起来。是否可以获取列表的每个部分(用逗号分隔),无论数字是多少,还是我必须使用%%f、%%g、%%h
,这意味着我必须知道需要多少
@echo off
set libs="MSVCRT.LIB Kernel32.lib User32.lib",^
"MSVCRT.LIB Kernel32.lib User32.lib d3d9.lib",^
"MSVCRT.LIB Kernel32.lib User32.lib d3d9.lib OpenGL32.lib"
for %%l in (%libs%) do (
echo %%~l
)
逗号是普通
循环中的标准分隔符。与循环中的和循环中的
不同的一点是循环通过列表中的每个项目进行迭代。但是!空格也是一个分隔符,因此您需要引用列表中的每个项目。(您可以使用%%~l
)将其取消引用。问题是它必须忽略空格,并且我无法将引用的库发送到CL编译器Creat!这项工作完成了,节省了我很多时间。我也学会了如何去引用它。谢谢