DOS命令与批处理学习历程
DOS窗口基本操作
- “↑”和”↓”键——————————回看上一次执行的命令
- “ESC”键————————————清除命令行
- “F7”键 ————————————-查看命令历史纪录
- “ALT+F7”键 ——————————清除命令历史纪录
- “ALT+F10”键 —————————–清除宏定义
- “Tab”键————————————输入文件名前几个字符按“Tab”键补齐文件名
- “Ctrl+C” 组合键或”Break”键 ——中断操作
- “命令+/?” 或”help+命令”———–查看帮助文档
DOS基本命令
DOS命令通常分为内部命令和外部命令。内部命令常驻内存,在任何时候都可以使用;外部命令是一个个单独的可执行文件,存放于磁盘,它们并不常驻内存,只有在电脑需要时,才会被调入内存,使用外部命令需要保证命令文件在当前的目录中,或已经被加载了路径。
内部命令都存放于command.com中,计算机启动时,随该文件加载并常驻于内存;我的电脑是64位Win10系统,外部命令存放于”C:\Windows\SysWOW64”文件夹下。标准Windows提示命令文件在哪里?
类型 | 内部命令 | 外部命令 |
---|---|---|
目录命令 | ||
md(创建子目录) | tree(显示目录结构) | |
cd(改变当前目录) | deltree(删除整个目录) | |
rd(删除目录) | tasklist(显示进程) | |
dir(显示目录) | taskkill(关闭进程) | |
path(设置可执行文件的搜索路径) | ||
pushd(保存当前目录以供POPD命令使用,然后改到指定的目录) | ||
popd(更改到PUSHD命令存储的目录) | ||
磁盘命令 | ||
vol(显示卷标) | lable(建立卷标) | |
format(磁盘格式化) | ||
unformat(恢复格式化) | ||
chkdsk(检查磁盘状态) | ||
diskcopy(整盘复制) | ||
scandisk(检测磁盘) | ||
defrag(碎片整理) | ||
sys(系统复制) | ||
fdisk(硬盘分区) | ||
文件命令 | ||
copy(文件复制) | xcopy(目录复制) | |
type(查看文件内容) | edit(编辑文本文件) | |
ren(更改文件名) | fc(文件比较) | |
del(删除文件) | undelete(恢复删除) | |
move(移动文件) | ||
attrib(修改文件属性) | ||
more(逐屏显示输出) | ||
find/findstr(在文件里查找指定字符串) | ||
assoc和ftype(显示修改文件扩展名关联) | ||
其他命令 | ||
cls(清除屏幕命令) | mem(当前内存状况) | |
ver(系统版本号) | msg(显示系统信息) | |
date(日期设置) | doskey(调用和建立DOS宏命令) | |
time(时间设置) | help(查看DOS所有命令) | |
set(设置变量) | shutdown(关机) | |
prompt(设置提示符) | sc(与服务控制管理器和服务进行通信) | |
title(设置cmd窗口的标题) | reg(设置注册表) | |
regsvr32(注册dll文件) | ||
shift(更改参数位置) | ||
网络相关 | ||
telnet | ping | |
nbtstat(显示协议统计信息和当前使用NBI的TCP/IP连接) | netstat(显示协议统计信息和当前的TCP/IP连接) | |
ipconfig | ||
tracert | ||
net | ||
schtasks(替代at命令。允许管理员修改本地或远程上的计划任务) | ||
ftp(ftp文件传输) | ||
arp(显示修改地址解析协议(ARP)使用的IP到物理地址转换表) | ||
finger(显示与运行手指服务的指定系统上某个用户有关的信息) |
想要详细学习每个命令可以在DOS窗口下输入”命令+/?” 或”help+命令”查看帮助文档,比如”dir+/?” 或”help+dir”,里面有介绍每个命令的功能及格式。觉得每次都要打开DOS输入命令查看太麻烦的话,这里有一个DOS函数参考手册。初学者也可以下载洪恩在线DOS教程进行学习,里面讲解的非常详细。
DOS知识杂集
dir
- dir+子目录名:查看所在目录下指定子目录的文件。
- dir/x:显示8.3格式的短文件名(确保该磁盘开启了8.3兼容特性 如何开启?)。
- 输入”dir”命令,倒数第二行显示的文件信息:”.”、”..”和每个子目录都算是一个文件,但大小算零。
- dir *.exe:显示当前目录中所有扩展名是exe的文件。
- “dir d: “:查看d盘下文件。若当前目录为C:>,不必输入两条指令d: +dir。
cd
- cd+路径:进入指定子目录。
- cd.:当前目录。
- cd..:返回上级目录。
- cd\:返回所在盘根目录。
- cd /d d:或”d:”:直接进入某盘符。
- cd.>test.txt:创建一个零字节的空白文件test.txt(cd.是进入本身目录;>test.txt是输出结果写入txt)
copy和xcopy
copy
功能:复制一份或多份文件到另一个位置。
格式:copy 源文件名 目的文件名
(驱动器、目录缺省则为当前驱动器、目录,目的文件名缺省则为相同文件名)
C:\>copy c:\dos\edit.com
:把dos目录下的edit.com复制到当前C:目录,名字也是edit.com。copy c:\*.bat c:\zht
:复制C盘根目录下所有扩展名是bat的文件到zht目录里。
xcopy
功能:复制一份或多份文件或目录。在连同子目录一起拷贝时很有用,拷贝大量文件时比copy命令要快得多。
格式:xcopy 文件名/目录名 目的目录
将指定文件或目录拷贝到目的目录。
ren和move
格式:ren 源文件名 目的文件名
ren abc.txt bne.bat
把当前目录下abc.txt文件改名为bne.bat。
注意:如果用ren命令更改非当前目录中的文件名,那么源文件路径和目的文件路径要在同一个目录内。
格式:
move 文件名 目录
(移动文件至新目录下)
move 目录名 目录名
(修改目录名)
实例:
move 1.txt Mine\
:当前目录下1.txt移动到Mine目录下。
move 手机 电脑
:当前目录下“手机”目录修改为“电脑”目录。
type和more
type D:\UltraEdit\changes.txt
查看changes.txt文件的内容。
注意:除了扩展名是txt的文件,对其它文件最好不要使用type命令,否则屏幕上很可能会出现乱码。
more D:\UltraEdit\changes.txt
分屏查看changes.txt文件的内容。
path和set
path:为可执行文件设置一个搜索路径。
可执行文件包括.com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc。
在DOS下,如果我们要执行某个可执行文件,电脑会在磁盘上寻找这个文件,如果不经过特殊处理,它只在当前目录下寻找,如果没有找到则提示出错。
但是每次要执行某个文件前,都要将当前目录转换到它所在的目录很麻烦。所以我们使用Path命令定义某个目录。比如path c:\dos;c:\windows;c:\
这条命令是说,当我们执行一个文件时,电脑先在当前目录下查找这个文件,找到则执行,如果没有找到,则按照path命令所指定的目录顺序去查找,先在C盘dos目录下,然后在windows目录下,最后在C盘根目录下寻找这个文件。
但是即使是这样,每次启动都需要输入path路径依然很麻烦。因此我们把path命令写入DOS启动顺序中要自动执行的一个命令文件autoexec.bat中,这样启动计算机后,就可以执行Path命令指定目录中的任何可执行文件了。
set:显示、设置、删除变量。
- 显示变量:
set
或set s
前者显示批处理当前已定义的所有变量及其值,后者显示所有以s开头的变量及值。 - 设置和调用变量:
set [变量]=[字符串]
例如:set path=c:\dos;c:\windows;c:\
与path c:\dos;c:\windows;c:\
含义一致。
例如:set aa=abcd
,就是把aa定义为abcd。如果要调用这个变量,就把aa两边加上个百分号。
set aa=abcd
-
echo %aa%
-
pause
-
运行这段命令就会显示“abcd”。 - 删除变量:
set aa=
此句命令即可删除变量aa。若变量aa已被定义,则删除变量aa;若aa尚未定义,则此句命令无实质意义。
Tips:批处理中的变量是不区分类型的,不需要像C语言中的变量那样还要区分int、float、char等。比如执行set aa=345后,变量aa的值既可以被视为数字345,也可以被视为字符串345。
fc
格式:fc [文件1路径] [文件2路径]
FC默认逐行比较两个文件。文件中每一行的长度应小于256个字符,如果行长超过256个字符或者比较对象是二进制文件或程序文件,应加上/b参数,fc将对它们逐字节比较。
使用定向输出“>”: fc a.txt b.txt >c.txt
意思是把比较的结果写入c.txt,如果c.txt不存在先创建,存在的话覆盖原文件。如果不想覆盖原文件而是想追加到c.txt的话可以用“>>”,例:fc a.txt b.txt>>c.txt
。
补充:如果需要详细和可视化的比较结果可以百度一些文件比较的软件。
comp命令也可以比较,可以只列出文件不同的地方,但是只能比较两个大小相同的文件。
删除文件
- rd:删除目录。
- del:删除文件。
- deltree:删除目录树。
解压文件
dos本身不具备压缩解压功能,但可以借用WinRAR软件来实现这一功能,在某些脚本中该命令的助力还是不错的。
参数:
- a 压缩文件。
- e 不带压缩路径解压文件。
- x 带绝对路径解压文件。
命令:
- 压缩命令:start winrar a [压缩结果文件路径] [要压缩的文件路径]。
start winrar a d:\1.rar(或1.zip等) d:\Learning\ASCII.jpg
:将d:\Learning\目录下的ASCII.jpg压缩为1.rar(或1.zip等。默认格式为rar) - 解压命令(不带解压路径):start winrar e [要解压的文件路径]。
d:\Mine>start winrar e d:\1.zip
:将d:\目录下的1.zip文件解压到当前目录d:\Mine\下。 - 解压命令(带解压路径):start winrar x [要解压的文件路径] [解压结果文件路径] 。
start winrar x d:\Learning\1.rar d:\
:把d:\Learning\目录下的1.rar解压到d:\目录下。
外部文件
文件名=基本名+扩展名。
DOS的外部命令都是可以直接执行的文件,包括.exe和.com文件。
- exe:可执行文件(Executable File)。程序允许建立若干不同名的代码段、数据段、堆栈段或附加段。程序的长度仅受当前内存可用空间的限制。
- com:DOS命令文件(Command File)。程序只能设置一个段,且不建立堆栈段。程序的长度必须少于64K字节。com与exe文件的区别
如果我们要执行这些文件,只需在DOS窗口里敲入文件基本名然后回车即可,不需输入文件后缀。如:tree.com文件,功能显示目录结构,如果要执行它,输入tree即可;又如mem.exe文件,功能查看电脑目前内存占用情况,如果要执行它,输入mem即可(win64位上该文件已经被淘汰)。
通配符
- *:代替文件名中的多个字符。”a星.星”是代表文件基本名以a开头的所有文件。在文件名中出现星后,其后的所有字符都不起作用,比如”a星.星”和”a星b.星”是没有任何区别的。文件基本名和扩展名中最多只能各出现一个星。
- ?:代替文件名中的单个字符。”a??b.*”是代表文件基本名只有四个字符,并且第一个字符是a,最后一个字符是b的所有文件。
批处理文件
批处理文件起源于DOS时代,在DOS时代的扩展名为.bat(即是batch的缩写)。在Windows NT以后的平台中,还加入了以.cmd为扩展名的批处理文件,其性能比.bat文件更加优越,执行也与.bat文件一样方便快捷。
注:由于.bat文件是基于16平台下的程序,在Windows NT及以后的32位中运行时偶尔会出现堆栈溢出之类的错误,所以建议在新的系统中尽可能的采用.cmd扩展的批处理文件代替.bat的文件。
我学习批处理,大部分都是跟着批处理之家这个网站内容学习的:批处理新手入门导读。
常用符号
@ % : ~ > | ^ & ()等批处理常用符号详解
基本命令
命令 | 功能 |
---|---|
echo |
显示此命令后的字符。echo 你好 :显示”你好”。echo. :输出一个”回车换行”。echo :显示当前是 echo off 状态还是 echo on 状态。echo,%a% :echo 与变量中间使用逗号, 或.+/:;[] 等特殊字符,防止变量是空以及变量名是on 或off 的时候发生异常。
|
echo off | 从下一行开始关闭回显。 |
echo on | 从下一行开始打开回显。 |
@ | 关闭单行回显,不显示此命令行本身,加在命令行的最前面。 |
% |
参数表示符/变量引用符。变量可以从 %0到%9,%0表示文件名本身,字符串用%1到%9顺序表示。根目录下一个批处理文件的名为t.bat,内容为 type %1 type %2 。那么运行C:\>t a.txt b.txt 将顺序地显示a.txt和b.txt文件的内容。%a%代表引用变量a。
|
call |
调用另一个批处理文件(如果直接调用别的批处理文件 ,执行完那条文件后将无法执行当前文件后续命令)。call c:\ucdos\ucdos.bat :调用ucdos.bat
|
pause |
运行此句会暂停,显示Press any key to continue...
|
start |
调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。start calc.exe 即可打开Windows的计算器。
|
rem和:: |
注释符。相当于c的//。与rem 不同的是, ::后的字符行在执行时不会回显, 无论是否用echo on 打开命令行回显状态。另外, rem 可以用于 config.sys 文件中。
|
: |
标号。”:字符串”表示,标号所在行不被执行。:start ;goto start
|
“>”和”>>” |
命令重定向符,将输出信息重定向到指定的设备或文件,系统默认输出到显示器。nul指空设备,>nul 是屏蔽命令的输出内容。比如 pause >nul,屏蔽”请按任意键继续…”相当于回车换行;del wind 2>nul,屏蔽错误的内容,就算没有wind文件,也不会有提示。”命令+>+写入路径”。作用是把原本输出到cmd窗口中的信息重定向到文本文件中去。例:echo 123>d:\1.txt 写123到1.txt。>:1.txt不存在先创建,存在的话覆盖原文件。>>:追加到1.txt。
|
exit | 退出DOS窗口。 |
特殊命令
if
表示将判断是否符合规定的条件,从而决定执行不同的命令。
有三种格式:
- if “参数”==”字符串” 待执行的命令
参数如果等于指定的字符串,则运行命令,否则运行下一句。(注意是两个等号)
如if "%1"=="a" format a:
否定形式if not "%1"=="a" format a:
- if exist 文件名 待执行的命令
如果有指定的文件,则运行命令,否则运行下一句。
如if exist config.sys edit config.sys
否定形式if not exist config.sys edit config.sys
- if errorlevel 数字 待执行的命令
如果返回码等于指定的数字,则运行命令,否则运行下一句。
如if errorlevel 2 goto start
。
否定形式if not errorlevel 2 goto start
DOS命令运行后都会返回一个数字给DOS,称为返回码或错误码errorlevel。输入echo %errorlevel%
就可以获取到前一个命令的返回值。
if errorlevel leq 1 goto start 这里的leq表示小于等于。全部的比较参数及常用命令的返回值及其代表的意义
一般情况下,程序或命令成功执行时,返回的errorlevel是0,错误时返回1或更高的值。当然,有些命令是没有返回值的,这点需要注意。 - if defined 变量 待执行的命令
检测某个变量是否已经被定义。
set “str1=ok”
if defined str1 echo str1已经被定义 - if 条件 (命令1) else 命令2
else的用法,记得命令1加括号。
for
对一组文件中的每个文件运行指定的命令。
格式
FOR [%%i] IN (set) DO [command]
执行过程:for
语句依次提取集合set
中的每一个元素,把它的值赋予形式变量i
,带到do
后的命令command
中参与命令的执行;并且每次只提取一个元素,然后执行一次do
后的命令语句,而无论这个元素是否被带到command
中参与了command
的运行;当执行完一次do
后的语句之后,再提取set
中的下一个元素,再执行一次command
,如此循环,直到set
中的所有元素都已经被提取完毕,该for
语句才宣告执行结束;
参数i在DOS窗口中格式为[%i]
,在批处理文件中格式为[%%i]
。
例:for %%i in (*.bat *.txt) do type %%i
:含义是如果是以bat或txt结尾的文件,则显示文件的内容。
- for 处理文件
-------------FOR %%variable IN (set) DO command
- for /d 处理文件夹
--------FOR /D %%variable IN (set) DO command
- for /r 枚举目录树处理文件
--FOR /R [[drive:]path] %%variable IN (set) DO command
- for /l 处理数字序列
--------FOR /L %%variable IN (start,step,end) DO command
- for /f 处理字符串、命令输出和文本内容
--FOR /F ["options"] %%variable IN (file-set/"string"/'command') DO command
goto
批处理文件运行到这里将跳到goto所指定的标号处, 一般与if配合使用。
goto end :end
echo this is the end
choice
让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……
如: choice /c ync /m 确认请按y,否请按n,取消请按c
将显示
确认请按y,否请按n,取消请按c [Y,N,C]?
例如,test.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,文件结束。
set /p p=请输入
:屏幕上显示”请输入”,并会将输入的字符串赋值给变量p。这条可以用来取代 choice 命令。
参考资料
百度百科:DOS命令
Wikipedia:MS-DOS命令列表
dos下怎么压缩/解压文件
Dos命令比较两个文件的不同
百度百科:批处理
DOS命令与批处理学习历程相关推荐
- Shell命令、Dos命令和批处理命令
1.小结 定义:DOS与Windows中cmd的区别:操作系统可以分成核心(kernel)和Shell(外壳)两部分,其中,Shell是操作系统与外部的主要接口,位于操作系统的外层,为用户提供与操作系 ...
- Windows CMD/DOS命令,批处理
文章目录 0. 写在前面 1. 常用的CMD命令 1.1 设置变量命令set 1.2 自定义DOS窗口color.title 1.3 网络连接相关 1.3.1 ping 命令 1.3.2 telnet ...
- 基础知识(一),ip地址详解、网关、DNS、进制转换、DOS命令、批处理、用户和组管理、telnet、RDP、NTFS、CIFS
基础知识: 企业 >enterprise 专业 >profession 服务器 >server 客户端 >client 浏览器 >Browser B/S 架构:服务器对应 ...
- attrib批量显示文件夹_1.2Windows之DOS命令基础篇-学习attrib+del+copy+xcopy命令
学习要点: 1.设置文件属性:attrib 2.删除命令:del 3.复制文件:copy 4.复制文件(夹):xcopy --------------------------------------- ...
- DOS命令--ASSOC的学习
首先,给出在DOS输入命令help ASSOC后,得到的文本: Displays or modifies file extension associationsASSOC [.ext[=[fileTy ...
- 【批处理学习笔记】第十四课:常用DOS命令(4)
系统管理 at 安排在特定日期和时间运行命令和程序 shutdown立即或定时关机或重启 taskkill结束进程(WinXPHome版中无该命令) tasklist显示进程列表(Windows XP ...
- 学习黑客必须要掌握的DOS命令全集
学习黑客必须要掌握的DOS命令全集 很多朋友往往都对黑客比较崇拜,其实黑客也只是比我们知道更多一些我们所不了解的电脑相关命令,其中dos命令是黑客最为精通的,在使用中也最常见,要想成为一名黑客各种do ...
- window的dos命令学习笔记 七
文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...
- 批处理入门手册之批处理常用DOS命令篇(md、rd、ren、move)
批处理入门手册之批处理常用DOS命令篇(md.rd.ren.move) 这篇文章主要介绍了批处理入门手册之批处理常用DOS命令篇(md.rd.ren.move),需要的朋友可以参考下 1.3 学习 m ...
- window的dos命令学习笔记 一
文章目录 说明: 1.学习dos命令的起源: 统统删除bat脚本 一.dos历史学习笔记(后期整合到这里,嘿嘿,加油) 一.一些常用的批处理命令: 0.学习小技巧: 1.什么是批处理 2.echo ( ...
最新文章
- 人工智能的浪潮中,知识图谱何去何从?
- SpringBoot+Mybatis+Swagger2环境搭建
- js RegExp用法
- 一句话给你的亲戚解释清楚你专业是做什么的!
- Expression Blend 5 Preview For Silverlight5 RC已发布
- 干货 | 算法工程师入门第二期——穆黎森讲增强学习(一)
- Effective Java之接口优先于反射机制(五十三)
- 基于spring-boot和elfinder的在线文件管理
- Moving Average
- 移动开发学习记录点滴-动态增加列表行数据
- SVN: bdb: BDB1538 Program version 5.3 doesn't match environment version 4.7
- Python学习笔记25:接口类、抽象类和封装
- 小米平板2(2015716)官方线刷包_救砖包_解账户锁
- 关于深圳商事登记招商ukey签名无效
- 检测数据库连接泄漏的最佳方法
- CCNA学习笔记——第一章:OSI 和 TCP/IP 模型
- MIS系统开发利器,快速的字典录入解决方案,另类的、可管理的.NET DataWindow
- 生动化你的表达——DuerOS中的SSML应用
- Python中Set函数
- 算法设计与分析:分治法输出数字旋转方阵