0、小记
记得我第一次接触电脑是在2000年7月——小学毕业的那个暑假,是和同学一起报的电脑学习班。也正是那时,我学习了DOS,盲打和Word等基本电脑技能。那个年代,在农村中小学电脑还没有普及。不过,我到了初中后,计算机已经成了一门辅科课程。到了大学后,我又较系统的学了一下DOS,于是知道批处理可以一次执行很多DOS命令,而且还可以存成文件以便以后使用,于是又大致学了一下批处理。这确实是个好东西,不忍独享,在此与各位朋友分享。
1、概念理解
批处理(Batch),也称为批处理脚本。一般来说,批处理都是针对DOS(Disk Operation System)而言的,实际上批处理就是把一系列的DOS命令放在同一个文件(.bat)中,以实现某种功能。因此,要想学习批处理,首先要学习DOS命令。另外,如果你会用PhotoShop那么,你肯定也知道在PS中也有批处理功能,它类似于Office中宏的录制过程,以后的文章会陆续介绍一些电脑的批量操作方法,比如:Office中的宏和VBA,PS中的批处理,以及VBS脚本等。
对于懂电脑的70后或一部分80后来说,他们对DOS系统并不陌生。喜欢折腾电脑的朋友肯定也会经常用批处理替代某些重复的电脑操作,以实现高效办公。比如:获取目录树,批量重命名,比较文件,加密文件,合并与拆分大量文件,定时关机,……
2、DOS基础
本文重点不是DOS,所以这一节写得很简单,但却很实用。若想系统学习,最好是买本书。如果只是想了解一下,那么维基百科或百度百科都是好去处。
2.1、启动方法
纯DOS模式。
需要一个DOS启动盘(软盘,光盘,U盘等均可),制作方法网上随处可见。既然软盘都可以装下DOS系统,可见它是非常精练的,实际上纯DOS系统只有三个文件:MSDOS.SYS,IO.SYS,COMMAND.COM。
保护模式DOS。
在任意Windows系统下,都可以运行保护模式的DOS,即命令提示符,启动方法如下:“开始→运行”,键入“cmd”或“command”。其中“开始→运行”的快捷键为“Win+R”。
2.2、自学DOS——帮助命令(不区分大小写)
☆ 显示全部DOS命令与说明——“help”。实际上,外部命令并不显示,比如“ping”、“getmac”等。
☆ 显示某个命令的详细使用说明——命令 + “/?”。比如:“for /? >>D:\cmdfor.txt”可以将命令“for”的使用说明导出到D盘的“cmdfor.txt”中。
2.3、DOS中的一些特殊符号
由于DOS中的帮助做的非常给力,所以本文不对程序中的命令作过多解释,请自己动手查询。这里仅对在DOS中难以查询的符号作简要说明。
☆ “@”——在命令前加上此符号,运行时,屏幕上将不显示此命令
☆ “.”——跟在“echo”命令后,如果不加此符号,当“echo”后为空行时,将显示“echo”的开关状态。跟在开关“/r”的“for”之后,枚举当前目录树。
☆ “:”——标签名,与“goto”命令配合使用。详情请按2.2节方法查看“goto”的帮助。
☆ “::”——注释,与“rem”基本相同。
☆ “>”——将输出结果导出到文件,如果文件不存在则创建,如果存在则覆盖。
☆ “>>”——将输出结果导出到文件,如果文件不存在则创建,如果存在则续写。
☆ “%”——在批处理中,调用变量时,需要在变量两端各加一个百分号。另外,在批处理的“for”命令中,还需要在变量之前多加一个百分号。
☆ “*”——DOS中的通配符。
☆ “””——在DOS中输入目录时,如果目录中含有空格,需要将其写在双引号内。
☆ 停止程序,“Ctrl+C”或“Ctrl+PauseBreak”,暂停程序“PauseBreak”。
☆ 关于变量与字符串的操作,请自己在网上查询。
3、批处理例子
为了方便大家阅读,仅在3.2中给出详细程序,其它例子仅给出核心代码,完整程序请自己下载后查看。
3.1、批处理文件的创建与修改
☆ 创建方法:<1> 新建文件文档;<2> 编写内容并保存;<3> 重命名,修改扩展名为“bat”,例如“eg.bat”。
☆ 修改方法:“右键→修改”,修改好后保存即可。
3.2、获取目录树
首先,介绍一个最简单的例子。
代码:
tree /f >>dirs.txt
以上命令可以直接在DOS中运行,也可以存为批处理文件。
下面,对此功能加以修饰。
预览:
改进后的代码:
rem 关闭回显,其中rem为注释命令
@echo off
rem 设置程序标题
title 获取目录树 凡星有梦制作
rem 开始标签
:start
rem 清屏
@cls
rem 设置颜色
@color b5
rem 设置窗口大小(58列,32行)
mode con: COLS=58 LINES=32
rem 以下为主窗口中显示内容
@echo.
@echo.
@echo. 获 取 目 录 树 程 序
@echo.
@echo. 凡 星 有 梦
@echo.
@echo. 制 作
@echo.
@echo. ==============================================
@echo.
@echo. 请选择要执行的命令(输入序号后回车):
@echo.
@echo. 1、将程序所在目录的目录结构保存到同一目录中的文本
@echo. 文档contents.txt。包含子文件夹中所有目录和文件名。
@echo.
@echo. 2、自定义。例如
@echo. 统计目录:”D:\program files”
@echo. 保存目录:E:\contents.txt
@echo. 注释:如果目录中含有空格,请用双引号。
@echo.
@echo. 3、退出
@echo.
@echo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@echo.
@echo. ~~~~~~~~~~~~~谢谢您使用本软件~~~~~~~~~~~~~
@echo.
@echo. ==============================================
@echo.
rem 记录您输入的编号,并存入变量”Choice”中
set Choice=
set /p Choice= 请选择要执行的命令(输入序号后回车):
rem 若变量”Choice”不为空,则取其第一个字符。比如输入332,则返回值为3
if not “%Choice%”==”” set Choice=%Choice:~0,1%
rem 判断,并转到相应的命令行
if /i “%Choice%”==”1” goto auto
if /i “%Choice%”==”2” goto custom
if /i “%Choice%”==”3” goto close
:auto
tree /f >> contents.txt
@echo. 目录树已成功保存在本文件夹下的contents.txt中。
pause
goto start
:custom
set dirtree=
set /p dirtree= 请输入统计目录:
set savedir=
set /p savedir= 请输入保存目录:
set iffiles=
set /p iffiles= 如果您只想导出目录结构而不包含文件名,请输入1,否则输入2:
if not “%iffiles%”==”” set iffiles=%iffiles:~0,1%
if /i “%iffiles%”==”1” (@tree %dirtree% >> %savedir%) else (@tree %dirtree% /f >> %savedir%)
@echo. 目录树已成功保存到%savedir%中。
pause
@goto start
:close
exit
下载地址:获取目录树(百度网盘)
3.3、创建文件夹
按日期和时间创建文件夹
代码:
set a=%time: =0%
set tm1=%a:~0,2%
set tm2=%a:~3,2%
set tm3=%a:~6,2%
set tm4=%a:~9,2%
md %date:~0,10%”-“%tm1%%tm2%%tm3%%tm4%
下载地址:按日期和时间创建文件夹(百度网盘)
创建指定个数的文件夹
@color e0
@set /p fn= 请输入文件夹前导名称:
@set /p st= 请输入开始编号:
@set /p ed= 请输入结束编号:
@for /l %%f in (%st%,1,%ed%) do (
@md %fn%%%f%
)
@cls
@echo.所有文件夹已创建完毕!
@pause
下载地址:创建指定个数的文件夹(百度网盘)
3.4、加密文件
本程序很简单,仅是“copy”命令的一个应用。可以将一个文件嵌入到一张图片中,而且图片还可以正常打开,从而使他人难以发现。要想更加安全,建议先将需要加密的文件用WinRAR加密压缩,之后再用本程序将其嵌入到图片中,最后将此图片放在大量图片中,非专业人员是无法发现的,就算发现了,我们还有最后一层保护——WinRAR提供的AES-128或AES-256非对称加密技术!学过现在密码学的都知道,这一加密技术是非常安全的。
下载地址:加密文件(百度网盘)
3.5、批量重命名
首先,推荐一款免费的批量重命名软件:菲菲更名宝贝。功能很强大!下面,我们用批处理程序还可以实现批量重命名。实际上,用批处理基本上可以完成推荐的软件中所有的功能。这里给出两个例子,以供参考。
下载地址:①重命名-自动编号(百度网盘) ②重命名-在原文件名后加创建日期(百度网盘)
3.6、合并文件
下面这段代码,可以将与程序所在目录下的所有的文本文档的内容都合并到文档“mytext.txt”中。其中程序的第二行是将文件名(不包含扩展名)写入文档“mytext.txt”中,如果不需要可以删掉。
代码:
@FOR /R %%v IN (*.txt) DO (
@echo %%~nv%>>mytext.txt
@type %%v%>>mytext.txt )
3.7、定时关机
也有点用处吧。主要就是命令“shutdown”的简单应用。
下载地址:定时关机(百度网盘)