我在DOS Batch中定义了这样的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
,这意味着我必须知道有多少人可以期待?
答案 0 :(得分:2)
@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
)
逗号是普通FOR
循环中的标准分隔符。FOR
和FOR /F
不同的一点是FOR
遍历列表中的每个项目。但是!空格也是一个分隔符,因此您需要引用列表中的每个项目。(您可以使用%%~l
取消引用它)