批处理进阶之变量和参数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
批处理进阶之变量和参数
第一节基本概念
1、数据类型
2、常量和变量
3、参数和参数变量
第二节变量的分类
1、环境变量
2、参数变量
3、迭代变量
第三节SET命令详细用法
1、显示、设置或删除环境变量
2、/P 交互模式开关与菜单设计
3、/A 数学开关与简单数学计算
第四节增强的变量引用
1、增强的环境变量引用
2、增强的参数变量/循环变量引用
第五节参数传递和漂移
1、参数传递
2、参数漂移
第六节变量的局部化
1、SETLOCAL和ENDLOCAL
2、环境变量延迟扩展
======================================================================
第一节基本概念
本节内容推荐有一定的批处理基础或者编程基础的人看。
1 数据类型
任何程序都是由指令和数据组成的,类推到批处理上面就是命令和数据了。
数据有类型之分,不同类型的数据在计算机内部的存储方式,取值范围和支持的运算都是不同的。
从目前来看,批处理涉及的数据类型有两种:字符串类型、数字类型。
字符串类型:任意数量的字符,可以用双引号来界定一个字符串,这在很多语言里面是通用的。
例子:s、doom "12.3+78" "TRUE LOVE"。
字符串类型可以进行字符运算,例如替换、合并等。
数字类型:批处理支持数字类型为整数。
例如60、312 等。
数字类型可以进行数学计算,而数字形式的字符串是不能直接进行数学计算的。
批处理是一种“弱类型”的脚本语言。它的数据类型极少,而且对数据类型的界定也很模糊。目前批处理已经实现数据类型的自动化处理,即在需要时可以自动转化数据类型,而这个转换过程用户是感觉不到的。用户完全不必理会数据的类型或者数据类型是否需要转化,或者我们可以简单理解为批处理只有一种数据类型——字符串类型。其实这是脚本类语言的共同特点,“弱类型”大大简化了脚本代码。
2 常量和变量
借用其他高级编程语言的概念,来分析一下批处理里面的常量和变量……
根据运行时存储位置所存储的值能否被改变,我们可以把数据可以分为常量(数据)和变量(数据)。
常量是系统内置的或用户预定义的,在执行过程中其值是明确而唯一的,不能被改变。例如,"hello"等字符(串)都是系统内置常量,可以直接使用,不一定需要标识符。批处理里面的常量概念很弱,也没有相关的操作命令支持自定义常量,因此可以不理会常量。
变量也是由系统或者用户预定义的,但其存储的内容在运行期间可以发生改变。批处理里面的变量都必须有标识符,即变量名,每一个变量名都指向一个具体的存储空间。变量名或由系统预定义,或由用户自定义。批处理中,变量的设置(定义,初始化,赋值)一般是通过SET语句来完成的。由于批处理是“弱类型”脚本语言,定义变量时不必理会变量的类型,命令解释器会自动决定使用哪种类型或者在使用时自动完成类型转换。
在批处理中使用变量,有两重好处:
(1)用简单的名称替代复杂的字符,简化代码。
(2)使用统一的代码段,通过改变变量值来实现重用。
3 参数和参数变量
我们来分析一条简单的命令:
[/D] 是功能开关,此开关表示是否开启跨驱动器切换工作目录。
[drive:][path] 就是参数了,也就是待接受处理的对象,其默认值当前工作目录。
从上面的简单分析我们知道,参数是用来指定命令要处理的对象。任何命令行运行时都需要参数,所谓“不需要参数就能运行”的命令(批处理)其实都包含了默认的参数,逻辑上依然存在实实在在的参数。例如运行"dir"时,其隐藏的参数就是当前工作目录。
除了在运行命令时可以使用参数,我们在调用批处理或子程序时也可以使用参数。实际上,我们可以把被调用的批处理或者子程序看成是特殊的命令。
上面讲过,运行命令时参数是用来告诉命令要处理的对象,即传递给命令的信息。
调用批处理(子过程)时参数是传递给被调用者的信息,而参数变量就是是被调用者用来接收传入信息的变量。
我们要区分参数和参数变量这两个概念也很简单:
参数是相对于调用者来说的,参数变量是相对于被调用者来说的。
参数只有在调用过程中才有存在,而参数变量一直存在无论是否被调用。
======================================================================
第二节变量的分类
批处理中的变量,按照产生来源和用途分为:"环境变量" 、"参数变量"和"循环变量"。
1、环境变量
微软描述:环境变量是包含诸如驱动器、路径或文件名之类的字符串。它们控制着多种程序的行为。例如,TEMP 环境变量指定程序放置临时文件的位置。请记住:环境变量本质上是字符串类型变量,其存储(或被引用)的内容一定是字符串!
环境变量可以分为预定义环境变量和自定义环境变量。
(1)预定义环境变量
他们由windows系统自动定义和赋值,他们的值保存在注册表中,用户一般直接引用即可,当然在需要时也可以改变他们的值。任何用户都可以添加、修改或删除“用户环境变量”,但是只有管理员才能添加、修改或删除“系统环境变量”。
我把他们列出来。
%ALLUSERSPROFILE% 本地返回“所有用户”配置文件的位置。
%APPDATA% 本地返回默认情况下应用程序存储数据的位置。
%CD% 本地返回当前目录字符串。
%CMDCMDLINE% 本地返回用来启动当前的Cmd.exe 的准确命令行。
%CMDEXTVERSION% 系统返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME% 系统返回计算机的名称。
%COMSPEC% 系统返回命令行解释器可执行程序的准确路径。
%DATE% 系统返回当前日期。使用与date /t 命令相同的格式。由Cmd.exe 生成。