中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-13 19:08
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批处理javac的编译和用java查看生成.class功能程序!
楼 主 [求助]批处理javac的编译和用java查看生成.class功能程序! 发表于 2008-04-15 19:26 ·  中国 天津 联通
初级用户
积分 29
发帖 15
注册 2008-04-14 19:20
UID 115892
性别 男
状态 离线
经常会使用javac 编译写好的java代码
但是经常要改变目录然后要 e:\java>javac [文件名].java 编译
然后 e:\java>java [文件名] 运行查看结果!
如果正确还好,错误了进了死循环还要关了重新cmd重新进入

想用批处理自动判断指定文件夹下 *.java 的文件名然后用javac运行那个文件
(使用简单的 javac *.java 不成功!)
javac 的用处是生成 [文件名].class文件

再就是怎样继续用判断出来的文件名运行 java [文件名].class
(.class 可省略运行)

希望有高手帮个忙!简化偶们调试时浪费的时间!
2 发表于 2008-04-15 19:33 ·  中国 江苏 苏州 吴江区 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
UID 99089
性别 男
状态 离线
CLASS环境变量没设置好
set class=.
3 发表于 2008-04-15 19:45 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线

@echo off
for /f "tokens=*" %%i in ('dir /a/s/b D:\*.javac') do (
start "" "%%i" "%%dpni.java"
java.exe "%%dpni.class"
)
pause

未测试
第一高手 第二高手

4 发表于 2008-04-15 19:50 ·  中国 天津 联通
初级用户
积分 29
发帖 15
注册 2008-04-14 19:20
UID 115892
性别 男
状态 离线
其实主要是对 .java 的编译!
javac 命令不支持 *.java 这个通配符!而且还要区分大小写(java程序区分大小写)
.class 那个应该没什么
主要就想就设置一次目录(文件目录固定)
为的是识别[文件名] 并交给 javac [文件名].java 去执行
5 发表于 2008-04-15 20:03 ·  中国 江苏 苏州 吴江区 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
UID 99089
性别 男
状态 离线
有一点我不明白,JAVAC 只能执行后缀为.java的文件,如果错误,会出现死循环??
6 发表于 2008-04-15 20:08 ·  中国 天津 联通
初级用户
积分 29
发帖 15
注册 2008-04-14 19:20
UID 115892
性别 男
状态 离线
谢谢!
可是貌似没有能完全通过!
遍历文件做到了,但是程序是用记事本打开的!
应该用 javac.exe 编译 [文件名].java程序 如(D:\>javac [文件名].java)
但是我没能看懂全部的for命令
再有就是 dpni 这个不明白是什么 cmd 提示说是无效标识!
7 发表于 2008-04-15 20:16 ·  中国 天津 联通
初级用户
积分 29
发帖 15
注册 2008-04-14 19:20
UID 115892
性别 男
状态 离线
不是那个意思!我也是刚接触 java 所以程序不是把握的太好
我的意思是说调试的时候 java 没有写好可能会有死循环是例如
int a = 10;
int i = 0;
while(a = i)
{
System.out.println(".");
}

有时候忘记了{}里面添加自加 i++ 或者前面条件写错了不能跳出循环,只能关闭cmd
8 发表于 2008-04-15 20:30 ·  中国 江苏 苏州 吴江区 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
UID 99089
性别 男
状态 离线
呵呵
while(a = i)
上面这句错了
9 发表于 2008-04-15 20:49 ·  中国 天津 联通
初级用户
积分 29
发帖 15
注册 2008-04-14 19:20
UID 115892
性别 男
状态 离线
哎。。。这都被你发现了!
好像是
while(a == i)
没办法经常犯这种小错!
所以才想弄个批处理 能节约很多时间!

e:
cd java
javac Abc.java
@pause
java Abc
@pause

就好像上面这个!每次都要修改文件名称 所以觉得费劲!
论坛跳转: