如何从批处理中排除文件?
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
循环来为每个项目做一些事情 for
。 if
可以用来比较。这将为您提供以下解决方案:
@echo off
for %%i in (*.java) do if /i not "%%~i" == "ignored.java" javac "%%~i"
另请注意 if
的 /i
开关,它使比较不区分大小写。
我写了一个批处理文件,使用 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
循环来为每个项目做一些事情 for
。 if
可以用来比较。这将为您提供以下解决方案:
@echo off
for %%i in (*.java) do if /i not "%%~i" == "ignored.java" javac "%%~i"
另请注意 if
的 /i
开关,它使比较不区分大小写。