将Java程序的多个输出传递给多个文件

时间:2013-11-27 23:42:24

标签: java command-line

我有一组文件,标记为file1.java,file2.java,...

我想将文件的输出传递给.txt文件,例如对应于每个java文件的output1.txt,output2.txt等。

我知道我可以这样做:

javac file1.java
java file1 > output1.txt

但是,有没有办法对给定目录中的所有文件执行此操作? (而不是手动完成)

2 个答案:

答案 0 :(得分:1)

这对于循环example很有用:

命令行用法:

for /f %f in ('dir /b c:\') do echo %f

批处理文件用法:

for /f %%f in ('dir /b c:\') do echo %%f

如果目录包含名称中包含空格的文件,则需要更改for / f命令正在使用的分隔符。例如,您可以使用管道char。

for /f "delims=|" %%f in ('dir /b c:\') do echo %%f

如果目录名本身在名称中有空格,则可以在for:

上使用usebackq选项
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f

如果您需要使用输出重定向或命令管道,请使用escape char(^):

  

for / f“usebackq delims = |” (dir /b "c:\program files" ^| findstr /i microsoft)中的%% f执行回显%% f

它显示命令行+批处理循环示例。然后你将拥有文件名,并且可以在javac和java等文件名上运行一些命令。

尝试将其分解为小任务: 获取文件列表(全部或仅.class) 循环遍历每个文件并在其上调用javac和java

谷歌是你最好的朋友 - 搜索“DOS批处理”+你需要的东西

答案 1 :(得分:0)

如果稍微重新构建输出文件名,您的工作会更容易:file1.java --> file1_output.txt

从命令行:

for %F in (*.java) do @javac "%F" >"%~nF_output.txt"

如果在批处理文件中:

@echo off
for %%F in (*.java) do javac "%%F" >"%%~nF_output.txt"

如果保留原始命名约定,则必须从每个文件名中解析出数字。非常可行,但在您的情况下似乎不值得。