windows批处理程序可以帮助我们做很多事情这里简单的学习一下备查。1.基本dos命令简介必要时可查cd改变目 windows批处理程序可以帮助我们做很多事情这里简单的学习一下备查。 1.基本
windows批处理程序可以帮助我们做很多事情这里简单的学习一下备查。1.基本dos命令简介必要时可查cd改变目
windows批处理程序可以帮助我们做很多事情这里简单的学习一下备查。
1.基本dos命令简介必要时可查
cd改变目录注意改变盘符不能用cd直接c:
dir显示文件列表 rmdir删除文件夹 del删除文件 type显示文件内容 copy文件复制 path为可执行文件设置搜索路径即设置环境变量 date显示或者设置系统日期 time显示或者设置系统时间 ver显示windows版本 cls清屏 分页查看长文件 type a.txt | more 查找命令 find
脚本的创建和执行
1.新建脚本用记事本文件打开保存为.bat或者.cmd文件。 2.执行脚本的方法 1.双击但是窗口停留的时间太短需要在脚本最后后面加"pause"。 2.直接在cmd窗口进入绝对路径输入文件名回车打开会输出在cmd窗口里。 3.直接拖动bat文件到cmd窗口里回车。 3.注释用::,也可以用rem但是注意注释只能单独一行写。 4.声明变量SET AB 注意这里等号两边不能有空格。 变量默认是字符串类型的要想进行数值运算要加/a参数比如 set /a four22 echo %four% 注意SET会覆盖掉以前重名的变量在声明变量时最好echo一下防止它覆盖掉系统变量。 5.引用变量echo %A% 6.变量的延迟替换祥戳点击打开链接
2.基本命令
echo off
echo off 屏蔽掉源代码的输出 echo on/off开启关闭命令回显 关闭命令回显
call命令
call可以调用另一个批处理文件也可以在命令中跳转
call called.bat
set:
echo off set xxx"c:/" set x11 echo 显示所有以字母x开头的变量 set x set xxx rem 删除xxx变量 echo 显示所有以字母x开头的变量 set x pause 注意set不能用在复合语句里面比如if 11 set a2或者for %%i in (a) do set a2 这样写不能更改变量的值
重定向符 >>
type source.txt > des.txt 将source.txt内的内容写入des.txt文件中会覆盖源文件的内容 type source.txt >> des.txt 将source.txt内的内容追加到des.txt文件中不会覆盖源文件的内容
管道 |
find "requirements" gp1.txt | sort > result.txt 将gp1.txt里的包含“requirements”的行排序输出到result.txt里。
流程控制
goto命令
if语句
if exist a.txt (echo 找到了a.txt文件其内容为
type a.txt) else ( echo 找不到a.txt文件 ) 或者 if not exist a.txt
for语句
注意在批处理文件中使用 FOR 命令时指定变量请使用 %%variable,在命令行中要用 %variable。变量名称是区分大小写的所以 %i 不同于 %I. 注意这样写是错的 for %%a in (*.txt) do( echo %%a ) do和后面的(必须有空格当do后有多条语句时必须加小括号。
一个例子
【删除目录下某种格式的文件 】 for /r f:\study %i in (*.o) do del %i for命令可以带参数或不带参数带参数时支持以下参数:/d /l /r /f
无参数时
for %%i in (t*.*) do echo %%i --显示当前目录下与t*.*相匹配的文件(只显示文件名不显示路径)
参数/d
搜索目录,注意只会搜索当前目录下的一级目录 for /d %%i in (c:\*) do echo %%i --显示c盘根目录下的所有目录 for /d %%i in (???) do echo %%i --显示当前目录下名字只有1-3个字母的目录
参数/R
此命令会搜索指定路径及所有子目录中与set相符合的所有文件注意是指定路径及所有子目录。 说明 1、set中的文件名如果含有通配符(或*)则列举/R参数指定的目录及其下面的所用子目录中与set相符合的所有文件无相符文件的目录则不列举。 2、如果set中为具体文件名不含通配符则枚举该目录树即列举该目录及其下面的所有子目录(并在后面加上具体的文件名)而不管set中的指定文件是否存在。 例子 for /r c:\ %%i in (*.exe) do echo %%i --把C盘根目录,和每个目录的子目录下面全部的EXE文件都列出来 for /r c:\ %%i in (boot.ini) do echo %%i --枚举了c盘所有目录并在目录下加上了\boot.ini for /r d:\backup %%i in (1) do echo %%i --枚举d\backup目录 ,并在目录下加了\1 for /r c:\ %%i in (boot.ini) do if exist %%i echo %%i --很好的搜索命令列举boot.ini存在的目录
参数 /L 数字递增
for /l %%i in (1,2,10) do echo %%i --输出1,35,79 for /l %%i in (1,1,5) do md %%i --建立从1~5共5个文件夹
参数 /f 字符串处理
for /f "eol; tokens1,2* delims, " %%i in (test.txt) do ( echo %%i echo %%j echo %%k ) eol; 忽略以分号打头的那些行; tokens1,2* --将每行中的第1个和第2个符号传递给 for 程序体即%%i是分割出的第一个字符串%%j是分割出的第二个%%k是分割出的第三个*代表以此类推如果echo了的变量没有被赋值比如%%k没有就会显示echo is off delims, 用,和空格作为分割符号(注意逗号后面有个空格)。 注意(test.txt)里只能是文件或者字符串。