dos命令详解笔记

http://www.dirtysea.com/forum.php?mod=viewthread&tid=785&extra=

一、入门与概述
1.文件与目录
文件名:文件基本名+后缀
文件基本名:1-8个字符,对于文件名必须存在;后缀0-3个字符,可有可无。
目录:在Windows中称作“文件夹”。
用DIR显示时,后面跟有[dir]标志,表明它们是目录。
2.exe:可执行文件
com:命令文件
bat:批处理文件
它们都被称作“可执行文件”。
Bat后缀的文件优先级高于以exe和com为后缀的文件
3.DOS内部命令和外部命令
内部命令是由command.com随系统启动直接加载到内存中去的,可直接使用。
换句话说,内部命令存在于command.com文件中。
外部命令是一个个独立的文件,存在于磁盘中,需要时可调入内存执行。
4..和..与\
. :当前目录
.. :当前目录的上一级目录,也称“父目录”
\ :根目录。
5.Dir命令
当前目录存在.和..时,用dir命令显示当前目录信息时,它们被认为是一个文件,只是大小为零。
6、DOS启动顺序
启动——》IO.SYS——》MSDOS.SYS——》CONFIG.SYS——》COMMAND.COM——》Autoexec.bat
其中,IO.SYS、MSDOS.SYS、COMMAND.COM对于DOS系统的启动必不可少。
io.sys  : 输入输出处理程序
Msdos.sys  :文件处理程序
Command.com  :命令处理程序
新解:
对于DOS,硬盘启动时首先有INT19中断来读取“硬盘MBR”,读到后将MBR读到内存0000:007c,接着INT19也跳到内存中0000:007c,此时的控制权还是INT19,接着在MBR中“有一个程序”会寻找“可引导的分区”,找到后将引导分区读到0000:007c,这时MBR程序就会跳到0000:007c这个地址上,系统开始启动了。
主引导扇区是:0柱0磁头1扇区
之后就是FAT(文件分配表)了
补充(2007-12-10)
。DOS  :disk operating system,单用户单任务OS。
冷启动 :开机时,打开显示器电源-》主机电源,关机时顺序相反
热启动 :系统启动时,按CTRL+ALT+DEL组合键再次启动系统
二者区别 :是否跳过内存检测等一些硬件检测过程,其它运行过程相同
。DOS常用保留名
CON :键盘\显示器
NUL :空设备或虚拟设备
AUX/COM1 :第一串行通信接口
COM2\COM3\COM4 :第2、3、4串行口
LPT1\PRN :第一并行接口
。批处理文件可以理解成“一个DOS命令”
。为何不要将批处理文件命名为DOS的“内部命令或外部命令”?
答:如果与内部命令同名,则DOS内部命令优先级高于批处理,批处理文件不能执行;
   如果与外部命令同名,则取决于“先找到外部命令还是先找到批处理文件”,谁先被找到
   就先执行,因此,建议命名批处理时要避免与DOS的内、外部命令同名。
。DOS下创建批处理文件的方式?
  a    copy  con  要创建的批处理文件
  b    edit  要创建的批处理文件
。也可以用
  Pause  要显示的信息   有类似与   echo   要显示的信息
。如何让“批处理文件”鸣镝?(依靠计算机内置扬声器)
  在DOS下用edit  鸣镝.bat,之后进入编辑页面,先输入
  Pause在输入一个空格,之后在按住CTRL键,按“P”键,松开CTRL键,再按住CTRL键,在按“G”,即可生成一个“鸣镝控制符”。
  也可以按住CTRL键不松手,先后按“P”和“G”键。
  其实,用echo也能达到同样效果,只是在文本中输入控制符麻烦,可在DOS下编辑批处理文件,输入控制符并保存后在返回到Windows下编辑,不失为一个好办法。

二、DOS命令简介
1.Dir
显示当前目录信息,但不包括系统和隐藏文件
dir /p :分屏显示信息(p是page的缩写,即分页显示屏幕)
dir/w :用宽列表显示信息,没有文件大小和创建日期
dir/d :类似于dir/w显示方式
dir/b :只显示文件名,目录名也按照文件名方式显示,不显示目录名的[ ]标志(一种精简显示)
dir /l :以小写字母显示文件和目录
dir /a: :显示指定属性的文件,例:dir /a:r显示当前目录下的所有具有只读属性的文件
例:dir /a:d表示只显示目录信息
例:查找指定日期的文件  dir|find “2007-12-04”,注意日期的书写格式和本机日期显示匹配
例:在多级目录下查找文件,使用参数/s,如 dir temp /s,如果当前目录下有temp目录,temp下还有temp目录,则执行结果是列出最后一层temp目录下的所有文件
REM
dir/?看帮助,发现a后的:是可选的,但如果不用:,则会显示“当前的驱动器的卷没有标签,找不到文件”信息。
不用:,怎么又好使了?自己疏忽吧!
Dir /a:-r :显示当前目录下所有具有非只读属性的文件
-        :表示“否的前缀”。
REM


Dir /o: 按照分类方式显示信息,如文件大小、字母顺序等,例:dir /o:s表示按照文件大小显示信息;dir /o:n按照字母顺序显示信息
Dir /n :以“长文件列表方式显示,文件名在最右侧”
Dir /c :类似于dir/n
Dir/x :显示非8dot3命名规则的文件
例:dir >test.txt 表示将dir命令结果导入到一个文本文件里
2.Cd
Change directory改变目录
注意:如果在C盘使用如下命令
c:\>cd e:\test
结果仍在c:\>在,只不过在转到d盘,d盘的当前目录是d:\>test>,我在用at定期删除某目录下的文件就出了以上问题。
例:
@echo off
c:
rem 当时我望了转到c:,结果删除了批处理文件所在的磁盘很多文件,包括批处理文件本身
rem 使得at任务无法执行
cd "C:\Documents and Settings\All Users\Application Data\Symantec\Symantec AntiVirus Corporate Edition\7.5\Logs"
echo y | del *.*
Cd .. 表示回到上一级目录
Cd\  表示回到根目录
Cd  /d  参数/d表示即改变当前目录,也改变当前驱动器
3.Copy
功能是复制与移动,但不能复制目录中的子目录
例:合并两个文本文件1.txt和2.txt为3 .txt
Copy /a 1.txt+2.txt 3.txt
REM 按照ASCII码合并这两个文件
Copy /b 1.txt+2.txt 3.txt
REM 按照二进制合并这两个文件
     参数/a和/b不能一起使用,其中/a只能合并纯文本文件,而/b即能以文本方式合并,又能以二进制方式合并
例:加密文件
copy /b test.jpg+1.txt 2.jpg
REM test.jpg和1.txt变成一个文件2.jpg,这样文本信息得到了加密,需要查看该信息,可使用ultraedit软件查看
REM 记住,要加密的文档一定要放到+号右侧
4.Xcopy
可以将目录中的非空子目录复制到其它地方,但要使用参数/s
/e必须与参数/s同用,表示不仅可以拷贝子目录,空目录也可以拷贝

/v拷贝后许进行校验
5.Del
Delete
Del *.* 非常危险的命令
例:del /f  强制删除只读文件      Del/a  删除指定属性文件
6.ren
Rename
7.type
一次只能显示一个文件的内容
8.Format与unformat
格式华后的磁盘可利用空间等于磁盘总空间,说明磁盘性能不错
Format /u 表示无条件格式化,此时unformat无效
例:Echo y|formant a:
Unformat 盘符 表示恢复已格式化的磁盘
unformat /l  表示列出可恢复的文件列表
9.Md与Rd
新建目录
例:同时建立多个目录
md c:\1  d:\2  e:\3 等价于md c:\1;d:\2
删除目录,所删除的目录里不能有子目录和文件,如果想这样执行,可使用
Rd /s
例:建立一个加密目录及如何查看和删除它
md  test..\
这样就建立了一个“加密”的文件夹,双击无法打开它
可通过“开始”菜单中的“运行”或“资源管理器中的地址栏”输入它的“完整路径”查看
通过 rd /s /q删除它
思考:如果建立的“加密”文件夹和属性隐藏的方法包括注册表隐藏结合起来,就可以建立一个相对私秘的空间。
注册表大概位置:MACHINE\SOFTWARE\WINDOWNS\CURRENTVERSION\EXPLORER\ACVANCED\FOLEDR\SHWOALL\CHECKEDVALUE的值
10.Deltree
删除目录树,非空目录照删不误
Deltree *.*非常危险的命令
11.Mem
Memory
12.Chkdsk
Checkdisk
13.Sys
C:\>sys a:等同于format a:/s,都是制作系统启动盘
如果copy一张DOS启动盘,io.sys和msdos.sys这两个文件不一定能拷贝到磁盘最前面的磁道上
14.Cls
清屏
15.More
分屏显示
16.Move
例:@echo off
Cd c:\test
Move c:*.* a:
REM
    注意第3行“c:与*.*”之间没有“\”,这表示将当前目录即test目录下的所有文件拷贝 到A盘。
17.Help
人如其名
18.Attrib
Attribute
例:将c:\test目录下的所有文件和子目录(包括目录本身)都设置为“只读”属性
Attrib  +r  c:\test  /s  /d
/s  :表示对子目录进行操作
/d  :表示对目录进行操作,可简单理解为directory
例:将c:\test目录下的所有文件和子目录(不包括目录本身)都设置为“只读”属性
Attrib +r  c:\test\*.*  /s /d
19.Time与date
Date /t :不需输入新时间
Echo+|date|find “当前日期”
Echo+|time|find “当前时间”
例:可编写一批处理文件记录机器时间使用的状况
echo+|date/t>test.txt
Echo+|time/t>>test.txt
20.Lable
21.Defrag
整理磁盘碎片
22.Doskey
建立和调用DOS宏命令
例:doskey d=deltree,以后执行d就相当于执行deltree命令
例:如果在CMD下输入了很多的命令,需要再次使用这些命令而又不想重复输入时,可使用doskey,具体操作(在CMD):doskey /h(h是history)是查看曾经在CMD下已经使用的命令,可通过F9键调出它们的缓存表再次使用,也可以使用上下箭头或PaUp和PaDn键来操作,如果想清除他们,可使用doskey /reinstall。
23.Fdisk
Fdisk /mbr :重新建立DOS主引导记录
24.Memmaker
内存优化命令
25.Emm386
扩展内存管理
26.Lh 或loadhigh
将程序载入高端内存
27.Msd
系统检测
不能直接使用
28.Undelete
该命令使用前,需要使用lock命令,解除对硬盘目录区不让修改的限制
Undelete /all :恢复所有del的文件,不用询问
Undelete /list :列出可恢复的文件列表
29.Path
例:path c:\test
如果在当前目录下执行某命令,不存在,则在path设置的路径下继续寻找该命令,有则执行
30.Prompt
设置提示符,就是我们常见的c:\>,c:表示当前盘符是C盘,\表示根目录,>表示将提示符与待输入的命令分开
可以根据需要将c:\>改变
31.Backup与restore
备份与恢复
Restort /s :包括子目录恢复到指定的目录中
32.Edit
只能编辑文本文件,编辑的文件存在则编辑,不存在则临时建立该文本文件并进入编辑状态,如果保存就会在磁盘上建立该文件
33.Set
设置变量,在CMD下直接输入set命令,会列出绝大部分的系统变量
例:set path=c:\test 等同于path c:\test
例:手动输入变量值
set /p a=    请输入你的选择
REM 在纯DOS环境下,/p参数不存在,该语句自然不好使!
REM 可通过setx命令自行定义类似系统变量的变量(重新启动机器后仍然存在的那种变量),但XP系统中没有该命令,2003中有。格式:setx 变量  赋值
Set /a var=
REM 对变量进行算术运算
例:set /a var+=1
Set %path:str1=str2%
REM 用str2替换str1
例:@echo off
set var= zgk.com
Echo 显示var原值
echo %var%
pause
set a=%var: =%
Rem 原变量中的空格被替换掉
echo 显示替换后的var值
echo %a%
set b=%var:.=%
echo %b%
    rem 原变量中的点“.”被替换掉
pause
set %path:~10,5%
REM 截取指定变量的列数
例:@echo off 
Set var=zgk.com
Echo %var%
Set b=%var:~2,3%
Rem 截取指定变量var的前2列,也就是说要从第3列开始读取3个字符赋给新的变量b,rem 那么b=k.o
Echo %b%
Pause
Set %path:~-10%
例:@echo off
set var=zgk.com
Echo %var%
Set b=%var:~-3%
Rem 从后往前取指定变量var的3列赋给新的变量b,那么b=com
Echo %b%
Set c=%var:~3%
Rem 从头开始截取指定变量var的前3列,就是说将var的第4列后的所有变量赋给c,rem 那么c=.com
Echo %c%
pause
Set %path:~0,-2%
例:@echo off
set var=zgk.com
Echo %var%
Set b=%var:~-3%
Rem 从后往前取指定变量var的3列赋给新的变量b,那么b=com
Echo %b%
Set c=%var:~0,-2%
Rem 从后去掉var的2列,之后从将var赋给c,那么c=zgk.c
Echo %c%
pause

34.Smartdrv
设置磁盘高速缓存
35.Append
设置非可执行文件路径
例:当前目录里没有test.txt,c:\下有 
append c:\ 类似于path命令
36.Debug
Debug 文件名
37.Diskcomp
比较两张软盘内容
38.Expand
解压命令
Expand 原压缩文件路径  目的地
39.Fc
比较两个文件内容
例:fc  /c   test1.txt   test2.txt
Rem  /c  不分大小写比较 
40.Fasthelp
快速帮助
XP系统下没有
Fashhelp command 等价于 command/?
41.Qbasic
启动basic集成环境
42.Setver
设置版本,还能查看到winword和excel的版本
在config.sys中常用语法:device=setver.exe
REM
没在config.sys中加入device=setver时,还能看到winword和excel的版本,加上了它怎么就什么也看不到呢?也没有错误提示信息
REM
43.Share
44.Subst
用指定的路径替代某个盘符
例:subst  a:  c:\test 表示用C盘下的test目录替代A盘
Subst  a: /d 表示删除替代
45.Tree
显示当前目录或指定目录下的所有子目录结构,但并不显示文件名
/f  (file) :显示目录的同时还显示目录下的文件名
Tree /a :以ascii码显示目录树
例:查找c:\test目录下的test.txt的个数
tree  /f  c:\test | find /c /I  “test.txt”
如果文件太多超出缓冲区大小,可使用:tree /f |more
46.Vsafe
病毒防护程序,没试过!!!!!!!
47.Ver
查看DOS版本号
48.Vol
查看磁盘的卷标号
49.Ctty
改变控制的输入输出设备
例:ctty  aux 表示设置aux为输入输出设备
50.Recover
覆盖磁盘
51.Replace
例:replace  c:\test1.txt  d:\test2.txt  /r
即使test2.txt具有只读属性,也将被替换
例:replace d:\a.txt d:\backup /s /p /u
/s :用D:\a.txt替换D:\backup及其子目录下所有的同名文件
/p :替换前要进行确认
/u :(update),在替换前检查源文件与被替换的目标文件的修改时间,如果前者更新,则不进行替换
例:@echo off
cd %1
for %%i in (*.%3) do if not exist "%2%%i" copy %%i "%2" /y
replace *.%3 "%2" /u
执行filesyn.bat d:\ e:\ txt
52.at
定制计划任务(该命令定制的计划任务是后台运行的,而在Windows下“任务计划”定制的任务是前台运行),二者的主要区别还有at命令只能查看有at命令本身定制的计划任务,而控制面板中的“任务计划”可以查看它和at命令定制的任务;二者都依靠task scheduler服务,如果该服务停止,通过运行“任务计划”中的任务可以开启该服务,而at命令定制的服务则不行。
例:设置at制定的任务为前台运行
at  16:30  /interactive  c:\test.bat
/interactive 可使任务变为前台运行
例:指定时间运行某程序
At  16:00   c:\test.bat
::在16:00运行test.bat
例:没有15执行某任务
At  16:30 /every:15  c:\test.bat
::每月的15日16:30运行
At  16:30 /next:15   c:\test.bat
:: 下个月的15日16:30运行
At  16:30 /every:四  c:\test.bat
::每周四的16:30运行
例:删除某任务
At  2  /delete  /yes
::删除任务ID为2的计划任务,/yes表示删除任务不需要确认
例:删除所有任务
At  /delete
::不输入任何ID,表示清除所有计划任务
53.shutdows
Shutdown  /s  /t  time  /f
/s  指定关机操作
/t  多长时间后关机,如/t  6,6秒钟后关机
/f  强制关机,不管还有什么程序在进行
例:在指定的计算机上运行某程序
At  \\computername  16:30  c:\test.bat
54.find
标准格式    find   “要查找的字符串”  待查找的文本文件
例:在test.txt中查找nihao字符串
find  “nihao”  test.txt
Find  /c  “nihao”  test.txt
::/c(count) 统计nihao在test.txt出现的次数
Find  /n  “nihao”  test.txt
::/n(number) 统计所有nihao所在的行数
Find  /i  “nihao”  test.txt
::/i(ignore)忽略大小写
Find  /v  “nihao”  test.txt
::/v  查找不包含nihao字符串的内容
55.Shift
增加批处理中参数的数量
56.Systeminfo
如果需要批处理显示有关系统信息,该命令很有用。
57.Ntsd
强制关闭进程命令,例:ntsd –c q –pn notepad.exe
58.建立隐藏用户
之前掌握注册表的用法:
1利用net新建用户;2导出注册表SAM下的name项;3删除新建用户;4导入已导出的注册表
新方法:net user zgktest$ /add,此时,用net user是无法查看到新建用户的;为新建用户添加注释:net user zgktest$ /comment:”注释内容”
59.Sfc
扫描受保护的系统文件的完整性
/scannow  :立即扫描所有受保护的系统文件,如有修改自动修复。
/verifyonly  :仅扫描不修复
/verifyfile  :仅扫描指定的文件不修复
59.Taskkill
终止进程
/f   强行终止
/im  指定终止进程的图象名
例:taskkill /f  /im  ctfmon.exe  /im  notepad.exe
三、批处理命令简介
1.Echo on/off
打开或关闭回显
echo off 表示不显示它以后的所有命令行
Echo 显示信息
Echo y|format a: 表示传递参数y 
Echo n|format a: 
以下是echo空行特殊写法
Echo.
Echo+
Echo;
例:echo nihao
    @echo nihao
    Pause
执行结果:
    echo nihao   rem 显示第1行命令行本身
    nihao       rem 显示第1行命令行执行结果
    nihao       rem显示第2行命令行执行结果 
2.@
不显示命令行本身
3.Call
在一个批处理文件中调用另一个批处理或文件
例:在1.bat中调用2.bat
1.bat
@echo off
Echo this is 1.bat 
Call  2.bat
::此时,用command /c 2.bat代替call 2.bat,不行,如果1.bat或2.bat中有中文,则显示一堆乱码
::用start 2.bat代替call 2.bat,执行完毕根本不返回到1.bat。
Echo 2.bat end,back to 1.bat
4.Pause
按任意键暂停
5.Goto label 和:label连用
注意label的命名有讲究,如果批处理中有多个label,那么label名的前八位字母就不能完全一致,因为COMMAND只识别前八位,如果命名一致,从第2个label将永远不能执行。
6.Rem
注释,等同于 ::和/*  */
7.%
参数表示符
参数是指运行批处理文件时在文件名后加的字符串,范围%0~%9,%0表示文件本身,字符串由%1~%9
8.If
条件判断语句
If  (not)  /i  “字符串1”=”字符串2” 待执行的命令
/I  :表示不区分大小写判断
例:@echo off
Set  /p var1=  please input
Set  /p var2=  please input
If   "%var1%"=="%var2%"  (echo 变量相等)  else echo 变量不相等
::变量var1和var2使用了双引号,是为了比较变量中的空格,如var1=a,var2=a ,不加
::双引号,它们相等,执行的是(echo 变量相等),加了双引号,执行的则是“else echo 变量不相等”命令
pause
If  (not) exist 文件 待执行的命令
例:if exist c:\test1.txt   (echo 存在test1.txt)   else  echo  test1.txt不存在
If  (not) errorlevel 数字 待执行的命令
例:@echo off
Set /p  commandname=请输入要测试的是否存在命令
If  errorlever==0  (echo 命令成功执行)  else  echo 命令没有成功执行
::曾经错误errorlever和0之间忘记了= =,echo和显示的信息之间没有空格
pause
例: @echo off
if not exist d:\myfolder\nul md d:\myfolder
if not exist d:\myfolder\word\nul md d:\myfolder\word
REM 在win98系统中,if语句无法检测到目录的存在,但可以检测空设备,所以为保证脚本正常运行,使用了nul。
If  defined  xxx  command :判断xxx是否是被定义的变量
例:@echo off
Set  var=123
If defined var (echo var是被定义的变量)  else echo 未被定义
pause
If defined %var% (echo %var%是被定义的变量)  else echo %var%是未被定义
::对var的值进行判断是否为变量
pause
Set 123=456
If defined 123 (echo 123是被定义的变量)  else echo 未被定义
pause

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章