如何从批处理中排除文件?

How do I exclude a file from batch execution?

我写了一个批处理文件,使用 javac:

编译所有 .java 文件
javac *.java

但后来我添加了另一个文件,我不想编译它。例如,我们将其命名为 ignored.java

在批处理编程中有没有办法从代码执行中排除某些东西?

类似于:

javac *.java /except ignored.java

另一种方法是使用参数文件

创建一个名为 classes 的文件,其中仅包含要编译的文件,如下所示:

MyClass1.java
MyClass2.java
MyClass3.java

你可以这样做:

dir *.java /a:-d /b|find /i /v "ignored.java">classes

然后,运行javac命令如下:

javac @classes

由于 类 文件中未提及 ignored.java,因此将跳过

cmd 需要一个 for 循环来为每个项目做一些事情 forif可以用来比较。这将为您提供以下解决方案:

@echo off
for %%i in (*.java) do if /i not "%%~i" == "ignored.java" javac "%%~i"

另请注意 if/i 开关,它使比较不区分大小写。