DOS批处理教程1-DOS指令及批处理编写实用技巧

什么是批处理文件?批处理文件的作用是什么?
批处理文件(Batch File)是一种在DOS 下最常用的可执行文件。所谓的批处理,就是按规定的顺序自动执行若干个指定的DOS命令或程序。即是把原来一个一个执行的命令汇总起来,成批的执行。
而程序文件可以拷贝到其它电脑中运行,因此可以大大节省命令反复输入的繁琐。它具有灵活的操纵性,可适应各种复杂的计算机操作。同时批处理文件还有一些编程的特点,可以通过扩展参数来灵活的控制程序的执行,所以在日常工作中非常实用。

批处理文件的格式是什么?
由于.bat文件是基于16平台下的程序,在Windows NT及以后的32位中运行时偶尔会出现堆栈溢出之类的错误(非常非常少),所以建议在新的NT系统中尽可能的采用.cmd扩展的批处理文件代替.bat的文件。
批处理的后缀名为
BAT( DOS / Windows )
CMD( Windows )

批处理的建立和编辑
DOS
使用DOS下的编辑器
EDIT.COM / WPS 等等
Windows
使用文本编辑软件
记事本/ 写字板等等

批处理的执行

命令提示下键入批处理文件的名称

双击该批处理文件

打开Windows下的DOS虚拟窗口

点击”Windows”按钮,然后点击菜单下的”运行”命令

然后在运行指令框内输入命令:cmd

OK, 你已经可以看到DOS的虚拟窗口啦

初入江湖

DOS的内部指令

DOS指令: dir

dir
显示目录中的文件和子目录列表。
语法:
dir [盘符:] [路径] [文件名] [参数]
示例:
dir /p /w
dir /A:H

常用参数:
/P在每个信息屏幕后暂停。
/W用宽列表格式。
/B使用空格式(没有标题信息或摘要)。
/S显示指定目录和所有子目录中的文件。

/A 显示具有指定属性的文件。
属性:
D 目录R 只读文件
H 隐藏文件A 准备存档的文件
S 系统文件-表示“否”的前缀
/O用分类顺序列出文件。
分类:
N 按名称(字母顺序) S 按大小(从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
G 组目录优先-颠倒顺序的前缀

DOS指令: cls

cls
清除屏幕。
语法:
cls
示例:
cls

DOS指令: cd / chdir

cd / chdir
显示或改变当前目录。
语法:
cd[驱动器:][路径]
示例:
cd ABC
cd C:\TEST

DOS指令: md / mkdir

md / mkdir
创建目录。
语法:
md[驱动器:][路径]目录名
示例:
md c:\test
mkdir Doc

DOS指令: rd / rmdir

rd / rmdir
删除空目录。
语法:rd [驱动器:][路径]目录名
示例:
rd C:\TEST
被删除的目录必须是没有任何文件或是子目录的空目录

DOS指令: echo

echo
打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。
语法:
echo [{on|off}] [显示信息]
示例:
echo off
echo hello world


小技巧:如何输出一个空行(回车换行)?
echo.
有一个小点哦~

DOS指令: @

@
表示不显示@后面的命令。
示例:
@dir /p /w
@echo Now initializing the program, please wait...
只能用在批处理文件里, 不能当做单独的DOS命令

看看使用和不用@的差异
unuseAT.bat
echo 123456
useAT.bat
@echo 123456

DOS指令: copy

copy
文件拷贝。
语法:
copy 源文件[+ 源文件2 [+ ...]] 目标文件
示例:
copy AAA.BAT BBB.BAT
copy AAA.BAT+BBB.BAT CCC.BAT

用法详解:
copy 源文件目标文件
示例:
copy aaa.bat bbb.bat
将aaa.bat 的内容完全一样的复制到一个新文件bbb.bat
如果aaa.bat的内容为123.
则bbb.bat的内容为123

copy 源文件1+ 源文件2 + ... 目标文件
示例:
copy aaa.bat+bbb.bat ccc.txt
将aaa.bat 的内容与bbb.bat合并成一个新文件ccc.txt
如果aaa.bat的内容为123,bbb.bat内容为abc
则的ccc.bat内容为:
123abc

DOS指令: del / erase

del / erase
删除文件。
语法:
del [驱动器:][路径]文件名
示例:
del ABC.TXT
erase C:\Test\Pass.bat

DOS指令: ren/ rename

ren / rename
重命名文件或目录列表。
语法:
ren[驱动器:][路径]文件(目录)名1 文件(目录)名2
示例:
ren aaa bbb
ren c:\aaa.txt bbb.bat

问题:
这个ren命令对吗?

1. ren c:\a\test.txt abc.txt
2. ren c:\a\test.txt abc.bat
X3. ren c:\a\test.txt c:\b\abc.bat

请注意,不能为目标文件或目录列表指定新的驱动器或路径

DOS指令: pause

pause
运行Pause 命令时,将显示下面的消息:
Press any key to continue . . .
并暂时中断批处理的执行.

DOS指令: rem

rem / ::
注释命令
语法:
rem[注释信息]
:: [注释信息]
示例:
rem 我是一段注释,嘿嘿
相当于C语言中/*--------*/.
它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。

题目1:
文件的连续拷贝
写一个批处理完成以下要求:
假设软驱的盘符为A:
需要将两张软盘里的内容分别拷贝到C盘下的DISK1和DISK2目录下,而且当前C盘下并不存在DISK1和DISK2目录.
在每张软盘开始拷贝之前请提示用户插入磁盘.

文件的连续拷贝–流程
显示初始化
建立Disk1, Disk2 文件夹
暂停, 提示在驱动器A:插入第1张磁盘

按任意键拷贝A:第1张磁盘内容到Disk1

暂停, 提示在驱动器A:插入第2张磁盘
按任意键拷贝A:第2张磁盘内容到Disk2
显示拷贝结束

@echo off
cls
mdC:\disk1
mdC:\disk2
echo Please insert disk 1 to driver A:
pause
copy A:\*.* C:\Disk1\*.*
echo Please insert disk 2 to driver A:
pause
copy A:\*.* C:\Disk2\*.*
echo Copy Completed!
关闭回显
清屏
在C盘根目录下建立新目录disk1
在C盘根目录下建立新目录disk2
显示插入磁盘的提示
暂停批处理,等用户插入磁盘按任意键继续执行
拷贝第一张磁盘的内容到c:\disk1
显示插入磁盘的提示
暂停批处理,等用户插入磁盘按任意键继续执行
拷贝第一张磁盘的内容到c:\disk2
显示拷贝完成的提示

题目2:
文件夹的自动备份
写一个批处理完成以下要求:
假设磁盘D:内有目录Disk / Disk1 / Disk2 / Disk3, 且除了Disk3外其余各文件夹均无子文件夹.
Disk3 下有3个子目录分别是D1, D2,D3
2.1 将Disk的内容累积备份到Disk1
2.2 将Disk的内容同步备份到Disk2
2.3 在Disk3下D1,D2,D3分别是3个不同时间的备份, D3是最旧的备份, D2次之, D1是最新的备份. 要求每次同步, 都删除最旧的备份, 保留最新的三次更新内容.
按文件名排列, 列出更新后文件夹的内容
备份时如果遇到文件同名, 则自动覆盖成最新的文件

定义:
累积备份: 不管备份文件夹内原来有什么内容, 都把源文件夹内的所有文件拷贝更新到备份文件夹, 如果之前同名文件存在, 则用新文件覆盖掉旧文件.
同步备份: 将备份文件夹内的文件更新成和源文件夹一样.

文件夹的自动备份–流程2.1(累积备份)
显示初始化
拷贝Disk文件夹的内容到Disk1
按文件名排列, 列出更新后文件夹的内容

@echo off
cls
echo Backup File From Disk to Disk1…
copy D:\Disk\*.* D:\Disk1\*.* /Y
echo Backup Completed!
dir D:\Disk1 /ON /P
关闭回显
清屏
显示备份信息
不用提示,将Disk目录下文件拷贝到Disk1

显示备份完成

显示D:\Disk1的内容

文件夹的自动备份–流程2.2(同步备份)
显示初始化
删除Disk2文件夹内的所有文件
拷贝Disk文件夹的内容到Disk2
按文件名排列, 列出更新后文件夹的内容

@echo off
cls
echo Backup File From Disk to Disk2…
Del D:\Disk2\*.* /Q
copy D:\Disk\*.* D:\Disk2\*.* /Y
echo Backup Completed!
dir D:\Disk2 /ON /P
关闭回显
清屏
显示备份信息
清除Disk2目录的内容
不用提示,将Disk目录下文件拷贝到Disk2

显示备份完成

显示D:\Disk2的内容

文件夹的自动备份–流程2.3.1(3次保留备份)
显示初始化
将最旧的备份(D3)删除
备份第二备份(D2)为第三备份(D3)

将第二备份(D2)删除
备份第一备份(D1)为第二备份(D2)

将第一备份(D1)删除
将Disk目录的内容备份到第一备份(D1)
按文件名排列, 列出更新后文件夹的内容将第二备份(D2)删除

@echo off
cls
echo Backup File From Disk to Disk3…
Del D:\Disk3\D3\*.* /Q
copy D:\Disk\D2\*.* D:\Disk3\D3\*.* /Y
Del D:\Disk3\D2\*.* /Q
copy D:\Disk\D1\*.* D:\Disk3\D2\*.* /Y
Del D:\Disk3\D1\*.* /Q
copy D:\Disk\*.* D:\Disk3\D1\*.* /Y
echo Backup Completed!
dir D:\Disk3\D1 /ON /P
关闭回显
清屏

显示备份信息

删除D3目录下的所有文件

将D2目录下文件拷贝到D3
删除D2目录下的所有文件
将D1目录下文件拷贝到D2
删除D1目录下的所有文件
将Disk目录下文件拷贝到D1

显示备份完成
显示D:\Disk3\D1的内容

文件夹的自动备份–流程2.3.2(3次保留备份)
高效率的方式
显示初始化
将最旧的备份(D3)删除
重命名第二备份(D2)为第三备份(D3)

重命名第一备份(D1)为第二备份(D2)

新建第一备份(D1)目录
将Disk目录的内容备份到第一备份(D1)
按文件名排列, 列出更新后文件夹的内容

@echo off
cls
echo Backup File From Disk to Disk3…
Del D:\Disk3\D3 /Q
ren D:\Disk3\D2 D3
ren D:\Disk3\D1 D2
md D:\Disk3\D1
copy D:\Disk\*.* D:\Disk3\D1\*.* /Y
echo Backup Completed!
dir D:\Disk3\D1 /ON /P
关闭回显
清屏

显示备份信息

删除D3目录
将D2目录重命名为D3目录(D3内容等于原D2)

将D1目录重命名为D2目录(D2内容等于原D1)

建立新的D1目录

将Disk目录下文件拷贝到D1

显示备份完成
显示D:\Disk3\D1的内容






猜你喜欢

转载自www.cnblogs.com/warden22/p/10881928.html