Dos批处理文件Bat的编写
最近由于工作的原因,总是需要些一些命令行下的批处理文件,这些扩展名为".bat"的文件,是从Dos时代一路传承下来的,所以我们总是喜欢叫他bat文件。从上大学的时候,一直用bat做一些小的东西,从来没有感受到过它的威力,最近用它做一些工作,发现这个东西还真的比较有意思。总结一下,希望对大家的工作能有所帮助。Bat有传统的模式,和Command Extensions两种模式,扩展用法通常是指后者。
最常用的命令:Call,Echo,For,Goto,If,Pause,REM,shift
Call 命令:调用另外的一个批处理文件。常用的方式就是:"Call sample.bat",新扩展的一个用法是 "Call :label arguments",也就是说,你可以用Call来调用Bat文件内部的一段脚本,用exit来退出当前的call调用。如果配合Goto语句的话,实际上是扩展的Bat文件支持了一个Ugly的函数。
这里需要注意的是,Batch脚本的参数(%0 %1 ...)有了一些新的变化:
%* 表示这个批处理文件的所有的参数(%1 %2 ....)
对于每一个%n还有一些扩展:
%~1 删除%1的两端的双引号
%~f1 扩展成%1的全部文件名
%~d1 获取%1的盘符
%~p1 获取%1的文件路径
%~n1 获取%1的文件名称
%~x1 获取%1的扩展名
%~s1 获取短文件名
%~a1 获取文件的属性
%~t1 获取文件的时间
%~z1 获取文件的大小
%~$PATH:1 从指定的PATH环境变量中查找%1并且扩展成全文件名
而且上面的还可以组合,例如:
%~dp1 把%1扩展成盘符和路径
%~nx1 把%1扩展成文件名和扩展名
%~dp$PATH:1 从制定的PATH中搜索%1,并且扩展成盘符和路径的形式
%~ftza1 扩展成dir类似的输出结果,文件名 时间 大小 属性
echo
用来显示一段文字,没有什么好说的。
goto
用来进行跳转:
goto END
:END
也没有什么好说的。
for 命令:
这个里面最复杂的一个命令。
基本形式:
for %variable in (set) DO command [command-parameters]
需要注意的是,这里的variable一定是单个字符的。set可以是一个或者多个文件,也可以使用通配符:
for %f in (*.txt *.log) DO type %f
表示查找当前目录下所有的.txt,.log,在屏幕上打印它的内容。
这里需要注意的是,Do后面可以加()来执行多行的语句;
for %%f in ( *.txt ) DO (
echo process %%f...
type %%f
)
对于扩展的For语句,有如下的几种形式:
for /D %variable IN (set) DO command [command-parameters]
对目录进行操作
for /R [[driver:]path] %varable IN (set) do command [command-parameters]
对一个路径下的所有的目录作指定的操作
for /L %variable IN (start,step,end) DO command [command-parameters]
产生一个列表,例如(1,1,5) 则产生一个(1 2 3 4 5)的列表
for /F ["options"] %variable IN (file-set|"string"|'command') DO command [command-parameters]
这个命令分三种情况,第一个是一个文件的集合,这种情况下,所有的这些文件都会被打开,命令将处理文件的内容。如果IN的括号里面是有双引号的,则是处理这个字符串。如果括号里面的是单引号的话,则是处理执行命令以后的结果。如果指定了usebackq的话,则单引号表示的是字符串,反向的单引号表示执行的命令,这个时候双引号可以用来把包含空格的路径括起来。
一个一个的解释,首先是options,options有如下的选项:
eol=c 只能指定一个字符,以此开始的为注释行。
skip=n 跳过文件的n行
delims=xxx 指出分隔符的结合。缺省的是空格和TAB
tokens=x,y,m-n,* 指定获取的Token.
usebackq 使用反单引号(~键一起的那个)
例如:
for /F "eol=; token=2,3* delims=, " %i IN ( myfile.txt ) do @echo %i %j %k
解析myfile.txt,忽略分号开始的行,%i是第二个,%j是第三个,%k是剩下的所有。
这里需要注意的是,上面%~进行扩展的那些东西,对于FOR循环中的文件变量也是有效的。
for %Z in (*.txt) do (
echo %~fZ
)
上面的命令就是用来显示全路径名的。
IF命令:
IF命令以供有三种形式:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1 == string2 command
IF [NOT] exists file command
非常简单,没有什么好说的,扩展的命令如下:
IF [/I] string1 compare-op string2 command
IF CMDEXTVERSION number command
IF DEFINED variable command
比较操作符如下:
EQU,NEQ,LESS,LEQ,GTR,GEQ,不多说了,很简单。
/I标志增加的时候,忽略大小写。
CMDEXTVERSION有点像ERRORLEVEL,不同的是他和Commend Extensions的内部数字作比较。
DEFINED用来判断一个环境变量是不是被定义。
可以用%ERRORLEVEL%,%CMDEXTVERSION%,%CMDCMDLINE%作变量用,前面两个很好理解,最后一个就是输入的命令行。
注意IF ERRORLEVEL命令,这个判断的是上一个命令的结果,所以一定按照ERRORLEVEL从大到小的顺序进行判断。
Pause命令:
让程序停下来等按键,没有什么好说的。
REM命令,注释,仅此而已
shift命令:
shift /2
修改参数的位置,从第二个参数开始,把后面的一个参数超前挪动一位。%3=>%2,%4=>%3,%0,%1不变。
Choice命令:
提示用户作出选择的命令;支持如下的参数
/C XNC 给出X,N,C三个选择
/N 隐藏提示信息
/CS 支持大小写
/T 10 10秒超时
/D 缺省选择
/M text 提示信息
字符串操作:
操作方法一,用FOR命令来进行操作。
操作方法二,%variable:~start,length%从变量中截取字符串。%variable:replace=candicate%来替换字符串。
set操作:
设置变量,可选的参数是:
/A 用来进行数学运算,支持与C语言一样的操作符
/P 根据用户的输入来设置环境变量
表达式运算:
调用expr来运算。
还可以set /a进行
其他的注意事项:
在写Bat文件的时候,一定要注意在开始和结束的时候setlocal enabledelayedexpansion/endlocal这样你改变的环境不会影响到外面。
最容易出错的地方:
错误的方法:
for ...... do (
set /a index+=1
use .... %index% ...
)
这里所有的%index%都是初始值,而不是你想要的。
下面的才是正确的:
for ...... do (
set /a index+=1
use ... !index!...
)
分享到:
相关推荐
### DOS批处理文件BAT教程知识点总结 #### 一、DOS批处理文件概述 - **定义**:DOS批处理文件是一种特殊的文本文件,扩展名为`.bat`,它由一系列DOS命令组成,用于批量执行任务。 - **类型**:DOS支持三种类型的可...
### Dos批处理文件Bat的编写 在日常工作中,我们经常需要用到一些命令行工具来完成特定的任务,其中一种非常实用的工具就是批处理文件(.bat文件)。这些文件源自DOS时代,至今仍在许多场景中发挥着重要作用。本文...
### DOS批处理文件BAT教程知识点总结 #### 一、基础命令使用详解 ##### 1. `echo` 和 `echo off` - **`echo`**: 显示此命令之后的所有字符。例如,`echo Hello World` 将会在屏幕上显示“Hello World”。 - **`...
标题中的“右击目录进入DOS(按1即可)_非常标准漂亮的DOS批处理文件bat示例.zip”表明这是一个关于DOS批处理的教程或示例集合,主要目标是通过右键点击目录直接启动DOS命令行,并且操作流程应该是用户友好的,只需按...
DOS批处理是一种在DOS操作系统环境下,通过编写简单的命令脚本实现批量自动化执行任务的技术。它在计算机早期广泛使用,尤其对于系统管理和日常维护来说,批处理脚本极大地提高了工作效率。尽管现在大多数用户已经...
在IT领域,尤其是在系统管理和脚本编程中,掌握DOS命令和批处理文件的编写是一项基本而实用的技能。批处理文件(Batch Files)是一种文本文件,通常具有.BAT或.CMD扩展名,在Windows操作系统中运行,它们由一系列...
批处理文件(BAT)是基于DOS和Windows操作系统中的脚本文件,用于自动化一系列命令执行。这些文件通常以.bat或.cmd扩展名结尾,是程序员、系统管理员和高级用户日常工作中常用的工具,因为它们可以简化重复性的任务...
- **函数定义**:虽然DOS批处理文件不支持标准的函数定义,但可通过子批处理文件调用来实现类似功能。 - **日志记录**:通过`>>`重定向至日志文件,记录执行过程中的信息,便于后续的故障排查。 综上所述,批处理...
在IT领域,DOS批处理文件是早期操作系统MS-DOS中的一个重要组成部分,它允许用户通过编写简单的命令脚本来自动化执行一系列操作。批处理文件的设计技巧是提高效率、简化日常任务的关键,尤其对于系统管理员和程序员...
MS-DOS 6.2批处理文件高级指南是一本深入探讨DOS批处理技术的教程。批处理,也称为批处理脚本,是DOS操作系统中一种自动化执行一系列命令的方法,它极大地提高了用户的工作效率,尤其在需要重复执行相同或类似任务时...
在标题提到的“为DOS批处理文件加密”中,我们关注的重点是如何对批处理文件(.bat)进行加密。这通常涉及到编写或使用第三方工具来实现对批处理内容的编码和解码过程。通过加密,批处理文件在未授权的情况下将无法...
批处理(Batch)是一种命令行接口下的程序执行方式,它允许用户预先编写一系列的DOS命令,形成一个批处理文件(通常以`.bat`或`.cmd`为扩展名),然后通过执行这个文件来依次运行这些命令,极大地提高了工作效率。...
DOS批处理文件通常以批处理脚本的形式存在,文件扩展名为“.bat”。 DOS批处理命令支持多种内置命令和功能,它们可以在批处理文件中使用,以实现对操作系统的控制。下面将详细介绍一些关键的知识点: 1. 内置命令...
BAT批处理文件是一种文本文件,每一行都是一个DOS命令,可以使用DOS下的Edit或Windows的记事本等文本编辑工具创建和修改。批处理文件可以使用条件语句、流程控制语句和循环语句来控制命令的执行流程。 一、批处理...
- **定义**:DOS批处理是一种简化的脚本语言,用于编写一系列DOS命令的脚本文件,可以在Windows和DOS系统中运行。 - **执行原理**:通过DOS或Windows系统内置的命令解释器(通常是COMMAND.COM或CMD.EXE)来解释并...
MS-DOS批处理文件是一种文本文件,通常以.BAT为扩展名,用于组合和自动化一系列命令操作。在命令提示符环境下,用户只需输入批处理文件的名称,即可执行其中的所有命令,大大提高了效率。批处理文件的核心在于它能够...
DOS批处理是一种在DOS操作系统环境下执行一系列命令的方法,它通过创建扩展名为BAT的文本文件来实现自动化操作。批处理文件通常包含了一系列的DOS命令,这些命令按照特定的顺序执行,极大地提高了工作效率。以下是...
在给定的场景中,我们要讨论如何在DOS批处理环境下获取文件的内容。以下是对这一主题的详细阐述。 1. **批处理基础** - DOS批处理源于早期的MS-DOS操作系统,如今在Windows系统中仍然适用。 - 批处理文件由一系列...
- **定义**:DOS批处理是指在MS-DOS环境下通过编写一系列命令并保存为扩展名为`.bat`或`.cmd`的文件来自动执行特定任务的过程。这些命令可以是内部命令(如`dir`、`cd`)或外部命令(如`format`、`copy`)。 - **作用**...