Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 通过逗号分隔的文本进行批处理循环_Loops_Batch File_Delimiter_Comma - Fatal编程技术网

Loops 通过逗号分隔的文本进行批处理循环

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 我必须根据要创建的可执行文件,将它们中的每一个传递给编译器。现在,我只想知道如何循环并获取这些库列表中的每一个。这就是

我在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
我必须根据要创建的可执行文件,将它们中的每一个传递给编译器。现在,我只想知道如何循环并获取这些库列表中的每一个。这就是我现在拥有的:

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!这项工作完成了,节省了我很多时间。我也学会了如何去引用它。谢谢