说说批处理

简介:

1、常用批处理内部命令

命令的使用参数均可以通过command /? 来获取,不在列举,只根据自己的使用,及自定义的常见使用做些描述,仅供参考。

注释: rem ::

rem

::

与rem不同的是,::后的字符行在执行时不会回显,无论是否打开命令行回显,因为命令解释器不认为他是一个有效的命令行,

另外,rem 可以用于config.sys 文件中。

echo off 关闭回显


@ 将这个符号放在批处理文件中其它命令的前面,运行时将不显示命令本身;与echo off 结合使用

@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" 就可以进行设置】


1
2
3
4
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" %*


2、常用特殊符号


@ 命令行回显屏蔽符

% 批处理变量引导符

引用变量用%var%,调用程序外部参数用%1到%9等

%0 批处理文件本身, 包括完整的路径和扩展名

%1 第一个参数 %9 第九个参数

|管道命令

^ 转义字符 &

&& || 逻辑与 或


3、dos应用


1)for

for /d %%variable IN (set) do command

(set)相当于设置条件

通配符 * ?

* 任意N个字符, ?表示任意一个字符


1
2
3
4
5
6
7
8
9
10
11
12
13
14
@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 % var iable 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 】,对批处理是一个很好的补充。




本文转自 刘园  51CTO博客,原文链接:http://blog.51cto.com/colynn/1317401

相关文章
|
Shell
添加批处理扩展
添加批处理扩展
46 1
|
SQL 关系型数据库 MySQL
批处理|学习笔记
快速学习批处理
批处理|学习笔记
|
Java
什么是批处理
什么是批处理:批处理就是多个dos命令组成的,双击可执行里面的命令。(微软系统) 批处理:桌面文件以双击就能打开,而java一双击是打不开的因为java是一个class文件他需要虚拟机得运行才能打开。
2280 0
|
Go 数据安全/隐私保护
|
安全 数据安全/隐私保护 Windows
|
人工智能 数据安全/隐私保护 Windows
|
Shell Perl Android开发