我有一组文件,标记为file1.java,file2.java,...
我想将文件的输出传递给.txt文件,例如对应于每个java文件的output1.txt,output2.txt等。
我知道我可以这样做:
javac file1.java
java file1 > output1.txt
但是,有没有办法对给定目录中的所有文件执行此操作? (而不是手动完成)
答案 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"
如果保留原始命名约定,则必须从每个文件名中解析出数字。非常可行,但在您的情况下似乎不值得。