bat(DOS)常用命令详解
1. echo命令:用来打印信息,也可以用来修改文件中的内容
- cmd窗口中输入 echo /? 可以获取echo命令帮助,其中 bat命令后加上 /?表示获取该命令帮助信息
- echo命令后直接加上要输出的信息,如果输出信息中有特殊符号(bat命令中用到的,例如>),输出信息就要加上双引号。此外echo还可以打印变量的值,如果想连续打印很多行,可使用&符号,例如下图操作
- echo除了将信息打印在屏幕上,echo也可以将信息直接输出到文件中,格式为【echo 信息 > 文件】,如果文件不存在,就会创建一个新的文件,然后将内容写入,如果文件存在,会覆盖掉文件中的原有内容;如果不想覆盖原来内容,可以使用【echo 信息 >> 文件】,表示将新的信息追加到文档后。
-
echo on(脚本默认),bat脚本运行后,每条命令的结果都会打印在屏幕上
echo off 会关闭回显,也就是脚本运行时不在打印每个命令,只能打印一些日志(如echo的输出结果)和一些错误,如下图操作
2.del 删除命令 (只能删除文件,无法删除目录), rd 只能删除目录,不能删除文件
- del test //删除当前目录下的test文件夹中的所有非只读文件(子目录下的文件不删除),删除前会询问
- del /f test //删除当前目录下的test文件夹中的所有文件(含只读文件;子目录下的文件不删除),删除前会确认
- del /f /s /q test e:\mybat\*.doc //删除当前目录下的test文件夹中所有文件及e:\mybat中所有doc文件(含只读文件;以及子目录下的文件;删除前不确认)
-
del /ar *.* //删除当前目录下所有只读文件
del /a-s *.* //删除当前目录下除系统文件外所有的文件
-
补充参数:/ar 、/ah、/as、/aa 分别表示删除只读、隐藏、系统、存档文件
/a-r、/a-h、/a-s、/a-a 分别表示删除只读、隐藏、系统、存档以外的文件
- rd test //删除当前目录下的test空文件夹(如果test不为空文件夹,则不会被删除)
- rd /s d:\test //删除d盘目录下的test文件夹(不论里面是否有文件或文件夹,一起删除),删除前确认
- rd /s /q d:\test //静默删除d盘目录下test文件夹,删除前不用确认
3.cd 显示当前目录命令(在cmd中,.、..和\表示相对路径,.是当前目录,..是上一层目录,而\表示根目录)
- cd .. //退出到上一个目录
- cd /d D: //进入D盘上次所在目录(比如上次目录是D:\test\aa,则执行完这个目录后就会跳到这个目录下)
- cd d:\ //进入D盘根目录(如果当前不在d盘下,则不执行,需要加 /d)
- cd /d d:\ //进入D盘根目录(/d强转符号)
- cd /d D:\test //进入D盘下的test目录
4.REM 和 :: 注释标识命令(必须在段首位置)
- rem 注释命令,该命令后的内容不被执行,但能回显
- :: 注释命令===@rem,与rem不同的是,该命令后的内容不会回显
5.md:新建文件夹
- md D:\test //在D盘下创建test文件夹
- md test1 test2 //在当前目录下创建test1和test2文件夹
6.dir:显示目录中的内容
- dir //显示当前目录下的文件夹和文件名以及修改时间
- dir test //显示test目录下的文件
- dir /b //只显示当前目录的文件夹名和文件名
- dir /p //分页显示当前目录中的文件内容
- dir /ad //显示当前目录中的文件夹
- dir /a-d //显示当前目录中的文件
- dir c:\windows\bb //显示该目录下的内容
- dir test.txt //显示当前目录找那个test.txt的信息
- dir /s //递归显示当前目录中的内容
- dir test* //显示当前目录下以test开头的文件和文件夹的信息
- dir /ah /os //只显示当前目录中隐藏的文件和目录,并按照文件大小从小到大排序
7.cls 清屏命令,清楚屏幕中的信息,tree:显示目录结构,tree d:\test //显示d盘test的目录结构
8.Bat脚本中%cd%和%~dp0的区别
- 使用范围:%cd%:批处理脚本(bat脚本)、命令行窗口
%~dp0:批处理脚本(bat脚本)
- bat脚本执行时,两者代表的值是否会变化:
%cd%:会。因为代表的是当前目录
%~dp0:不会。因为代表的是脚本文件在磁盘的位置
- 例如
set assets_path=..\assets\icon\jiangtai
del /q %assets_path%
%~dp0"..\sofewares\svn1.8\svn.exe" up %assets_path%
该代码将会用svn更新jiangtai目录下的资源
9. ren:文件或目录重命名
- ren test.txt tamp.bat //将当前目录下的test.txt文件重命名为sample.bat
- ren c:\test test2 //将c盘下的test文件重命名为test02
10. copy: 拷贝文件
- copy test.txt e:\mybat //将当前目录下的test.txt拷贝到e:\mybat目录下(若mybat中存在相同文件,则会询问是否覆盖)
- copy sample e:\mybat //将当前目录下的sample文件夹中的文件拷贝到e:\mybat下(存在相同目录,会询问是否覆盖)
- copy test.txt e:\mybat\test1.txt //将当前目录下的test.txt拷贝到e:\mybat下,并重命名为test1.txt(若存在test1.txt,则会询问是够覆盖)
- copy /y test.txt e:\mybat //将当前目录下的test.txt拷贝到e:\mybat下(无须询问,直接覆盖)