For loop 使用if语句循环目录中的文件(批处理文件)

For loop 使用if语句循环目录中的文件(批处理文件),for-loop,batch-file,compilation,For Loop,Batch File,Compilation,我正在尝试创建一个bat文件来编译目录中的所有.java文件,并运行名为Main的类(并输出到tulemused.txt),我可以对一个具有设置名称的.java文件执行此操作,但我不知道如何充分使用批处理脚本来循环所有文件 @ECHO on FOR /d %%f DO IF NOT %%f=="compile.bat" javac -encoding utf-8 %%f java -Dfile.encoding=UTF8 Main > tulemused.txt @ECHO off

我正在尝试创建一个bat文件来编译目录中的所有.java文件,并运行名为Main的类(并输出到tulemused.txt),我可以对一个具有设置名称的.java文件执行此操作,但我不知道如何充分使用批处理脚本来循环所有文件

@ECHO on

FOR /d %%f DO IF NOT %%f=="compile.bat" javac -encoding utf-8 %%f

java -Dfile.encoding=UTF8 Main > tulemused.txt

@ECHO off
这就是我所走的路

试试这个:

@ECHO on
 FOR /r %%f In (*) DO IF NOT "%%~nf"=="compile.bat" javac -encoding utf-8 "%%~f" 
java -Dfile.encoding=UTF8 Main >tulemused.txt 
试试这个:

@ECHO on
 FOR /r %%f In (*) DO IF NOT "%%~nf"=="compile.bat" javac -encoding utf-8 "%%~f" 
java -Dfile.encoding=UTF8 Main >tulemused.txt 

发现这样做效果更好,因为java希望一次编译所有类,但要归功于Wasif修复了原始循环

@ECHO on
set string=javac -encoding utf-8
 FOR /r %%f In (*.java) DO call :concat %%~nf
%string%
set /P name="What is the name of the class with the main method? "
java -Dfile.encoding=UTF8 %name% >result.txt
pause

:concat
set string=%string% %1.java

发现这样做效果更好,因为java希望一次编译所有类,但要归功于Wasif修复了原始循环

@ECHO on
set string=javac -encoding utf-8
 FOR /r %%f In (*.java) DO call :concat %%~nf
%string%
set /P name="What is the name of the class with the main method? "
java -Dfile.encoding=UTF8 %name% >result.txt
pause

:concat
set string=%string% %1.java

这与powershell有什么关系?这与powershell有什么关系?我很惊讶这被标记为已接受,而问题代码中显然有正确的内容,而这不在本文档中。批处理文件不被调用,
compile.bat.cmd
compile.bat.bat
!我很惊讶这被标记为已接受,而问题代码中显然有正确的东西,而这不在本文中。批处理文件不被调用,
compile.bat.cmd
compile.bat.bat