说说批处理

一、经常使用批处理内部命令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 】,对批处理是一个很好的补充。

相关文章
相关标签/搜索