【问题标题】:Referencing all files in a folder and its subfolders of a certain type引用文件夹中的所有文件及其特定类型的子文件夹
【发布时间】:2012-06-29 17:24:25
【问题描述】:

在一个 .bat 文件中,我正在使用以下行执行编译器

cl -GL -Od -Zi <all .h files> <all .c files>

但我不知道如何以这种方式引用所有 .c 和 .h 文件。我在想 */.c 和 */.h,但这两个都是无效参数。有什么办法可以以这种方式引用所有 .c 和 .h 文件?

【问题讨论】:

  • 掩码通常这样指定:*.h*.c。如果这就是您的意思并且实际尝试过但没有成功,那么请澄清您现在要做什么。您的意思是要为每一对 .h.c 文件多次调用编译器?
  • 不,由于某种原因,文本编辑器删除了我所指的内容。我的意思是从文件夹及其所有子文件夹中递归获取所有 .c 和 .h 文件。我认为 *.c 和 *.h 只能从当前目录获取文件。
  • 无论正确的掩码是什么,我认为由编译器来解释它,所以这个问题可能与批处理脚本无关(不过我不确定)。 IE。如果您想找到一种方法为所有文件运行一次编译器,您应该参考编译器手册以查看它是否接受掩码以及是否有引用子文件夹中文件的方法(它可能是命令行选项而不是实际上是一个复杂的面具)。

标签: batch-file filereference all-files


【解决方案1】:

cl 不允许您这样做,但是如果您想从某个点开始编译每个文件夹中的所有 C 文件,那么您可以执行以下操作。

注意,这些命令选项也不能传入头文件。


@echo off
set USAGE=Usage: %~n0 "C:\Existent Start Dir"
if %1xx == xx ( echo %USAGE% & exit /b 2 )
if not exist "%~1" ( echo %USAGE% & exit /b 1 )
for /r "%~dpn1" %%f in (.) do (
  pushd %%f
  if exist *.c (
    echo *** Compiling C files in %%f ***
    call cl -GL -Od -Zi *.c
    echo.
  )
  popd
)

使用以下方法进行测试: test.cmd C:\mytest

如果 C:\mytest 包含几个简单的 *.c 和 *.h 文件的文件夹,这将起作用。 test.cmd C:\mytest

您可能真的想要调用 nmake?

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 2019-06-19
    • 2015-03-29
    • 2017-01-08
    • 1970-01-01
    相关资源
    最近更新 更多