一、经常使用批处理内部命令html
命令的使用参数都可以经过command /? 来获取,不在列举,只根据本身的使用,及自定义的常见使用作些描述,仅供参考。linux
注释: rem :: windows
rem dom
::ide
与rem不一样的是,::后的字符行在执行时不会回显,不管是否打开命令行回显,由于命令解释器不认为他是一个有效的命令行,函数
另外,rem 能够用于config.sys 文件中。操作系统
echo off 关闭回显命令行
@ 将这个符号放在批处理文件中其它命令的前面,运行时将不显示命令自己;与echo off 结合使用htm
@echo off 关闭此批处理文件中命令的全部回显。对象
cls 清屏
dos下命令的参数使用时不区分大小写
pause 暂停
errorlevel 运行退出状态 0/1
title 批处理脚本执行时cmd的抬头显示
color 设置批处理运行环境颜色 示例:color 0a 黑色 淡绿色 [第一个为背景,第二个则为前景]
mode 配置系统设备 mode
mode con cols=113 line=15 & color 0a 此命令设置DOS窗口大小:15行,113列,背景色为黑色,前景为淡绿色
goto : [与if判断语句结合使用]
if [not] string1 == string2 command
if [not] exist %path% command
if errorlevel 或 %errorlevel == 0 command
if /i %a% == %b% () else () ## /i 不区分大小写 注意 else必定要与前括号在同一行,
如: if /i %a% == %b% (
) else ()
::判断变量是否认义及定义变量是否为空
if defined var command 或 if not "var"=="" command
判断数字的符号
EQU - 等于 ;NEQ 不等于 ;LSS 小于 ;LEQ 小于或等于 ;GTR 大于 ; GEQ 大于或等于
find查找命令
参数不区分大小写;操做对象为文件,不可对目录执行查找操做;查找匹配,打印包含有该字段的行。
/v 显示全部未匹配的行
由于find查找的对象是文件,因此通常与 type结合使用,固然也能够经过 将要查找的文件路径放在文件中,
借助for /f来实现一行一行读取,再用find查找每一个文件。
call :label arguments
调用本文件内命令段,至关于子程序。被调用的命令以标签:label开头,以命令goto :eof[要有空格]结尾
call :label运行完 标签,返回继续运行,至关于调用函数的意思;但当遇到刚才的定义的标签 仍然会继续执行;
使用起来也不很方便,较合理的方式 就是条件判断语句[if等] 与goto结合使用。
start
批处理调用外部程序的命令(在新新窗口中运行,批处理会继续往下运行,不理会外部程序的运行情况),若是直接
运行外部程序则必须等外部程序完成后才继续 执行剩下的指令。
setlocal与变量延迟
setlocal enabledelayedexpansion
用 ! 感叹号 来取变量, %var% ---> !var!
attrib 显示或更改文件属性
shift 更改批处理文件中可替换参数的位置 [表示不多用]
pushd popd
cd /d d:\mp4 #更改当前目录为d:\mp4
pushd c:\mp3 #保存当前目录,并切换当前目录为c:\mp3
popd #恢复当前目录为刚才保存的d:\mp4
通常用处不大,在当前目录名不肯定时,并有些帮助, 但我感受至少在切换目录时 加上/d 必定能够正常切换
assoc ftype
文件关联,感受这个搞破坏 比较合适;或者是作修复时
assoc 设置‘文件扩展名’关联,关联到‘文件类型’
ftype 设置'文件类型'关联,关联到‘执行程序和参数’
命令字符串%0 或 %1被经过关联调用的文件名所代替。 %* 获得全部的参数, %2 获得第一个参数,%~n获得其他全部以nth 参数打头的参数;n 能够是从2到 9 的数字。
windows执行一个程序的过程,【安装时先经过assoc 设置正确的 文件扩展名 关联,再经过ftype 设置文件类型关联,关联到相应的执行程序和参数】
assoc与ftype 示例:
##显示系统默认的,一样【assoc .zip=HaoZip.zip ftype HaoZip.zip="C:\Program Files\HaoZip\HaoZip.exe" "%1" 就能够进行设置】
C:\Users\liuyuan>assoc .zip .zip=HaoZip.zip C:\Users\liuyuan>ftype HaoZip.zip HaoZip.zip="C:\Program Files\HaoZip\HaoZip.exe" "%1"
恢复:exefile的正确关联
若是该关联已经被破坏,能够运行command.com,再运行 ftype exefile="%1" %*
二、经常使用特殊符号
@ 命令行回显屏蔽符
% 批处理变量引导符
引用变量用%var%,调用程序外部参数用%1到%9等
%0 批处理文件自己, 包括完整的路径和扩展名
%1 第一个参数 %9 第九个参数
|管道命令
^ 转义字符 &
&& || 逻辑与 或
三、dos应用
1)for
for /d %%variable IN (set) do command
(set)至关于设置条件
通配符 * ?
* 任意N个字符, ?表示任意一个字符
@echo off color 0a for /D %%i in (c:\*) do echo %%i ::递归显示c:\abd目录下以.txt和.html结尾的文件输出定向到 result.txt for /R "c:\abd" %%i in (*.txt;*.html) do if exist %%i echo %%i>> result.txt ::读取结果中的每行,会自动忽略空白行 下例:排除以#开头的行,以空格为分隔,并输出第1,2字段。 for /F "eol=# tokens=1,2 delims= " %%x in (result.txt) do ( echo %%x,%%y) rem for /L %variable IN (start,step,end) do command :: 从1开始,另开启5个cmd窗口 for /L %%i in (1,1,5) do start cmd ::从5开始,每次减1,开启5个cmd窗口 for /L %%i in (5,-1,1) do start cmd echo. pause
注: /R [[drive:]path] 路径不支持通配符
2)系统变量
取了几个感受 有用的:
%userdomain% 本地 返回包含用户账户的域的名称
%username% 返回当前登陆的用户的名称
%userprofile% 本地 返回当前用户的配置文件的位置
%windir% 系统 返回操做系统目录的位置
3)set
赋值 set var=[string]
set /a
set /p path=请输入:
echo %path%
替换
set %path:str1=str2% 这种替换 颇有鸡肋的感受,不能在原文件中直接替换,也许是我没发现。
echo %path% 对文件进行替换,还有经过输出重定向的方式,汗。。。
截取
%a:~[m[,n]%
m为偏移量,n为截取长度
set a=bbs.verybat.cn
::偏移量为0,去掉最后的3个单位
set var1=%a:~0,-3%
echo var1=%var1%
::偏移量为1,从左边开始截取3个单位
set var2=%a:~1,3%
echo var2=%var2%
pause
运行结果:
result: var1=bbs.verybat
var2=bs.
下载linux下的命令【http://down.51cto.com/data/994101 】,对批处理是一个很好的补充。