@echo off
title Java2 SDK Dummy --- Produced by WangYuantao
::keyWords=脚本;批处理;WSH;Java;编译;Application&Applet运行;傀儡;快速简洁;玩涛出品
::Version=1.2
rem 建立临时文件目录
md c:/temp/dummy > nul
set p=c:/temp/dummy/
dir/b *.java > %p%dir.tmp
rem 生成并运行wsh脚本
copy jDummy.bat %p%ini.wsf > nul
echo 1,50D > handle
echo E >> handle
edlin %p%ini.wsf < handle
echo Waiting...
del handle
%p%ini.wsf
if not exist %p%dummy3.ini goto clearAndExit
rem 回收j2sdk路径
FOR /F %%c IN (%p%dummy1.ini) DO set path=%path%;%%c
rem 回收java文件名,编译
FOR /F %%c IN (%p%dummy2.ini) DO set fn=%%c
echo Compiling...
javac %fn%.java
if errorlevel 1 pause & exit
rem 回收java类型,运行
FOR /F %%c IN (%p%dummy3.ini) DO set tp=%%c
if "%tp%"=="1" cls & java %fn%
if "%tp%"=="2" appletviewer %fn%.html
rem 清除临时文件并退出
pause
:clearAndExit
echo y | del %p%*.* > nul
rd c:/temp/dummy
rem ================================如果要保留.class文件,请注释掉或删除此段命令========
::del *.class
if exist %fn%.html del %fn%.html
rem ================================如果要保留.class文件,请注释掉或删除此段命令========
exit
rem =============此系第50行,以下内容为wsh脚本=========
<package>
<job id="job1">
<?job debug="true"?>
<script language="JScript">
//全局变量/
var errorr=0;
var p="c://temp//dummy//"//临时路径,与批处理定义一致
var wshshell=WScript.CreateObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
/jdk路径,来自注册表///
var infor="";
var ver=0;
var str="";
try{
ver=wshshell.regread("HKLM//Software//JavaSoft//Java Development Kit//CurrentVersion");
str=wshshell.regread("HKLM//Software//JavaSoft//Java Development Kit//"+ver+"//JavaHome");
}catch(e){
errorr=1
}finally{}
if(errorr==1){
wshshell.Popup("没有安装J2SDK,或注册表拒绝访问。");
}else{
str+="//bin";
var ini = fso.CreateTextFile(p+"dummy1.ini", true);
ini.Write(str);
ini.Close();
///主类信息,来自java源文件,使用正则表达式解析
var numMclass=0;
var typeMclass=0;
var dir = fso.OpenTextFile(p+"dir.tmp", 1);
var fn;
var java;
var jf;
var restr="";
var re;
var index=0;
var inindex=0;
var Mfn,Mtype;
while (!dir.AtEndOfStream){
fn=dir.ReadLine();
java=fso.OpenTextFile(fn, 1);
jf=java.ReadAll();
restr="public class "+fn.split(".")[0];
re=new RegExp(restr,"i");
index=jf.search(re);
if(index!=-1){
numMclass++;
typeMclass=1;
restr="public class "+fn.split(".")[0]+" extends Applet";
re=new RegExp(restr,"i");
var inindex=jf.search(re);
if(inindex!=-1){
typeMclass=2;
}
Mfn=fn.split(".")[0];
Mtype=typeMclass;
}
}
if(numMclass==0){WScript.Echo("不存在任何Java文件使其文件名与所含主类同名,请修改。")}
else if(numMclass>1){WScript.Echo("当前文件夹下存在不唯一的Java文件其文件名与所含主类同名,请手动选择编译。")}
else if(numMclass==1){
ini = fso.CreateTextFile(p+"dummy2.ini", true);
ini.Write(Mfn);
ini.Close();
ini = fso.CreateTextFile(p+"dummy3.ini", true);
ini.Write(Mtype);
ini.Close();
if(Mtype==2){
ini = fso.CreateTextFile(Mfn+".html", true);
ini.Write("<applet code=/""+Mfn+".class/" width=/"400/" height=/"400/"></applet>");
ini.Close();
}
}
}
</script>
</job>
</package>