1

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

したがって、最初の要素と最後の 2 つの要素が結合されたもののみを取得します。数に関係なく、リストの各部分 (コンマで区切られたもの) を取得することは可能%%f, %%g, %%hですか?

4

1 に答える 1

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の1 つは、リスト内の各項目FOR /FFOR繰り返し処理することです。しかし! %%~lスペースも区切り文字なので、リスト内の各項目を引用符で囲む必要があります。

于 2013-10-28T14:58:11.540 に答える