批处理进阶之变量和参数

合集下载

批处理参数详解

批处理参数详解

批处理参数详解批处理是一种自动执行一系列命令的脚本,它可以帮助提高工作效率和自动化重复的任务。

在批处理中,参数是一种非常有用的功能,它可以让我们在执行批处理脚本时传递不同的值,以便根据不同的需求执行不同的操作。

本文将详细介绍批处理参数的使用方法和常见的参数类型。

1. 位置参数位置参数是最常见的一种参数类型,它允许我们在执行批处理脚本时传递不同的值。

位置参数的格式为:%1、%2、%3...,其中%1表示第一个参数,%2表示第二个参数,以此类推。

我们可以在批处理脚本中使用这些参数来执行相应的操作。

例如,我们可以创建一个名为"test.bat"的批处理脚本,内容如下:```@echo offecho 第一个参数:%1echo 第二个参数:%2```当我们执行以下命令时:```test.bat hello world```输出结果将为:```第一个参数:hello第二个参数:world```通过位置参数,我们可以根据不同的需求执行不同的操作。

2. 命名参数命名参数是另一种常见的参数类型,它允许我们在执行批处理脚本时以"参数名=参数值"的形式传递参数。

命名参数的格式为:%参数名%。

例如,我们可以创建一个名为"test.bat"的批处理脚本,内容如下:```@echo offecho 用户名:%username%echo 电脑名:%computername%```当我们执行该脚本时,输出结果将为当前登录用户的用户名和电脑名。

通过命名参数,我们可以获取系统的各种信息,或者传递自定义的参数值。

3. 特殊参数除了位置参数和命名参数,批处理还提供了一些特殊的参数,用于执行特定的操作。

- %0:表示当前批处理脚本的文件名。

- %*:表示所有的位置参数,即从%1开始的所有参数。

- %~1:表示去除参数%1的引号。

- %~f1:表示返回参数%1的完整路径。

- %~d1:表示返回参数%1的驱动器号。

批处理变量

批处理变量

批处理中的变量一、系统变量他们的值由系统将其依据事先定义的条件主动赋值,也就是这些变量体系已经给他们定义了值,不须要我们来给他赋值,我们只须要调用而以! 我把他们全体列出来!1.%ALLUSERSPROFILE%返回“所有用户”配置文件的地位。

示例:C:\Documents and Settings\All Users2.%APPDATA%本地返回默认情形下利用程序存储数据的地位。

示例:C:\Documents and Settings\Administrator\Application Data3.%CD%本地返回当前目录字符串。

示例:E:\堂\ebook\小脚本4.%CMDCMDLINE%本地返回用来启动当前的Cmd.exe 的正确命令行。

示例:cmd /c ""E:\堂\ebook\小脚本\2.bat" "5.%CMDEXTVERSION%系统返回当前的“命令处理程序扩大”的版本号。

示例:26.%COMPUTERNAME%系统返回盘算机的名称。

示例:HP052811257.%COMSPEC%体系返回命令行说明器可履行程序的正确路径。

示例:C:\WINDOWS\system32\cmd.exe8.%DATE%系统返回当前日期。

使用与date /t 命令雷同的格局。

由Cmd.exe 生成。

有关date 命令的具体信息,请参阅Date。

示例:2011-01-12 星期三9.%ERRORLEVEL%系统返回上一条命令的过错代码。

通常用非零值表现毛病。

示例:900910.%HOMEDRIVE%系统返回衔接到用户主目录的本地工作站驱动器号。

基于主目录值而设置。

用户主目录是在“本地用户和组”中指定的。

示例:C:11.%HOMEPATH%体系返回用户主目录的完全路径。

基于主目录值而设置。

用户主目录是在“本地用户和组”中指定的。

示例:\Documents and Settings\Administrator12.%HOMESHARE%系统返回用户的共享主目录的网络路径。

批处理参数

批处理参数

批处理参数一、什么是批处理参数批处理参数是指在批处理脚本或命令行中使用的特定标记,用于传递给批处理程序的信息和指令。

通过使用不同的参数,可以在运行批处理脚本时改变脚本的行为和输出结果。

批处理参数可以帮助实现自动化任务、简化操作流程,并提高工作效率。

二、批处理参数的使用方式批处理参数可以通过命令行传递,也可以在批处理脚本中定义。

命令行方式使用较为广泛,因为它可以提供更大的灵活性和可定制性。

下面是一些常见的批处理参数的使用方式:1. 使用命令行参数命令行参数是通过在命令行中输入参数来传递给批处理脚本的。

批处理脚本可以使用”%1”、“%2”等特殊符号来获取命令行参数的值。

例如,假设我们有一个批处理脚本test.bat,内容如下:@echo offecho 参数1:%1echo 参数2:%2我们可以在命令行中输入以下命令来传递参数:test.bat 参数1 参数2执行上述命令后,将输出:参数1:参数1参数2:参数22. 在批处理脚本中定义参数除了通过命令行传递参数,批处理脚本还可以在脚本中自己定义参数。

通常使用set命令来定义参数。

例如,我们可以在批处理脚本中定义一个名为PATH的参数:@echo offset PATH=%1echo 当前路径:%PATH%执行上述脚本时,可以在命令行中传递一个路径作为参数:test.bat C:\Windows执行结果将输出:当前路径:C:\Windows三、批处理参数的用途批处理参数可以在很多情况下发挥作用,以下是一些常见的用途:1. 自动化任务批处理参数可以用于自动化任务的实现。

通过在批处理脚本中使用参数,我们可以将一些配置信息作为参数传递给脚本,从而实现自动化的操作。

例如,假设我们有一个批处理脚本backup.bat用于备份文件夹,我们可以通过传递目标文件夹的路径作为参数来指定备份的目标路径,实现自动化备份的功能。

2. 简化操作流程批处理参数可以帮助简化操作流程。

BAT批处理文件语法之常用命令和参数

BAT批处理文件语法之常用命令和参数

BAT批处理文件语法之常用命令和参数常用命令echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。

==== 注===========首先, @ 不是一个命令, 而是DOS 批处理的一个特殊标记符, 仅用于屏蔽命令行回显. 下面是DOS命令行或批处理中可能会见到的一些特殊标记符:CR(0D) 命令行结束符Escape(1B) ANSI转义字符引导符Space(20) 常用的参数界定符Tab(09) ; = 不常用的参数界定符+ COPY命令文件连接符* ? 文件通配符“”字符串界定符| 命令管道符< > >> 文件重定向符@ 命令行回显屏蔽符/ 参数开关引导符: 批处理标签引导符% 批处理变量引导符其次, :: 确实可以起到rem 的注释作用, 而且更简洁有效; 但有两点需要注意:第一, 除了:: 之外, 任何以:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用goto 所无法识别的标号, 即在:后紧跟一个非字母数字的一个特殊符号.第二, 与rem 不同的是, ::后的字符行在执行时不会回显, 无论是否用echo on打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比:: 更为适用; 另外, rem 可以用于config.sys 文件中.=====================echo 表示显示此命令后的字符echo off 表示在此语句后所有运行的命令都不显示命令行本身@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。

call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。

批处理中的变量和参数(二)

批处理中的变量和参数(二)

批处理中的变量和参数(⼆)-----siwuxie095⼆、⾃定义变量⼀般⽤ set 读⼊的⽅法定义和赋值1、程序⾥设置变量set var=Hello World!echo%var%pause>nulsublime中:2、读⼊的⽅法设置变量set /p var=请输⼊⼀个变量:echo%var%pause >nulsublime中:提到变量就不能不提批处理中的两个符号:%和 !批处理中,对变量不⽤像C语⾔⼀样预先定义就可以使⽤,⾮常⾃由看似⾃由的机制,却⼜让⼈⼜痛苦:在没有预先说明哪些符号是变量的情况下,计算机的识别问题。

解决⽅案:在编程时,对要使⽤的变量⽤ % 标明,在延迟变量的情况下⽤! 标明如:常规情况下@echo offset num=12echo%num%pause如:延迟变量情况下@echo offsetlocal enabledelayedexpansionset num=12for /l %%i in (1,1,5) do (set /a num+=10echo !num!)pause这两个例⼦就是关于常规情况下变量符号 %和延迟变量情况下变量符号!的使⽤,其功能在于告诉计算机该串代码是变量⽽%0 - %9 和 %* 这⼗⼀个符号中的%不是代表变量,⽽是参数的意思,参数和普通变量不同,不能改变参数的值在for⾥的%%i,两个 %标出的不是普通变量,⽽是循环变量,循环变量和普通变量不同,不能改变循环变量的值for⾥的循环变量%%i和参数 %0 - %9,其整体代表变量,引⽤时不能再对其增加变量符号 %或!在计算中,%表⽰取余,如:@echo offset num=100set /a result=num%%7echo%result%pause在输出格式中,%表⽰输出格式的意思%str:~m,n%,详见set命令总结:%应⽤范围:变量、参数、循环变量、余数计算、格式系统参数%0,%1,%2,%3,%4,%5,%6,%7,%8,%9,%*对于%1 - %9%1批处理的第⼀个参数%2 批处理的第⼆个参数%3 批处理的第三个参数%4批处理的第四个参数%5批处理的第五个参数%6批处理的第六个参数%7 批处理的第七个参数%8批处理的第⼋个参数%9 批处理的第九个参数批处理有且仅有这九个参数,不存在%10 及以上参数因为 call 命令允许使⽤参数,先看参数在 call 中的应⽤:@echo offcall :loop Hello World!pause>nul & goto :eof:loopecho%1echo%2sublime中:运⾏⼀览:计算机认为Hello World!是两个参数,如果想让其是⼀个参数,应该⽤双引号(英⽂格式)引起来再如:⽤ call 带参数递归算阶乘@echo offtitle 阶乘--递归算法echo. & echo. & echo阶乘--递归算法setlocal enabledelayedexpansionecho. & echo.set /p n=请输⼊⼀个数:set result=1if !n!==0 (echo结果等于1 & pause>nul & goto eof) else (call :loop !n!)echo. & echo结果等于!result!pause>nul:loopif not%1==1 (set /a result=!result!*%1set /a x=%1)sublime中:运⾏⼀览:参数也不⽌⽤在 call上,其他例⼦:同⼀个⽬录下,有两个bat⽂件:123.bat:@echo offstart abc.bat 1,2,3,4call abc.bat a b c dpauseabc.bat:@echo offecho%1echo%2pasue>nul运⾏ abc.bat ⼀览:运⾏ 123.bat ⼀览:弹出两个窗⼝可见:赋予参数时,参数和参数之间⽤逗号或空格隔开都可以如:F盘根⽬录下有⼀个 test.bat@echo offformat%1在cmd窗⼝中执⾏:在执⾏ test.bat 时,%1就表⽰z:,这样format %1 就相当于format z:,即格式化 Z盘但此程序明显⽤ set 读⼊更简单:@echo offset /p a=请输⼊⼀个驱动器号:format%a%pause>nul运⾏⼀览:双击执⾏ test.bat,输⼊ z:,若存在 Z盘,就会格式化 Z盘(显然这⾥ set ⽐%1 - %9 简单)再如:F盘根⽬录下有 test.bat,a.txt,b.txt:@echo offtype%1type%2在cmd窗⼝中执⾏:将顺序显⽰ a.txt,b.txt 中的内容很明显:同样可以不⽤%1 - %9就能实现显⽰⽂本⽂件再看:删除⽂件和⽂件夹del /f /q %1rd /q /s %1在cmd中执⾏时,像上⾯⼀样直接赋予要删除的⽂件(夹)的名字当参数即可,实际上可以更简单,直接拖放某⽂件(夹)到这个 bat ⽂件上⾯,即可彻底删除之所以⽤了两个命令 del 和 rd ,是为了保证可以删除⽂件以及⽂件夹,加上参数,是为了删除前不必经过确认就删除%*的作⽤不是很⼤,只是返回参数,不过它是⼀次返回全部参数的值,不⽤输⼊%0 - %9 来⼀个个确定如:@echo offecho%*在cmd窗⼝中执⾏:空格也⼀起输出了参数最多只能有九个,测试程序如下:@echo offecho%1echo%10echo%11pause>nulsublime中:在cmd窗⼝中执⾏:咋⼀看,参数在10及以上似乎可以,其实不然,变换测试:显然,%10 及以上是⽆效参数,但如果不指定返回参数,⽤ %*输出全部参数,参数个数就没有限制了%0不是返回参数,其有两层意思:第⼀层:如果 %0 前有 echo 等命令,则代表返回该批处理所在的绝对路径第⼆层:如果 %0 前没有任何参数,则代表⾃⾝批处理,会⽆限循环执⾏bat(也就是调⽤⾃⾝ bat 程序)如:@echo offecho%0pause运⾏⼀览:此显⽰结果带双引号,如果不想要双引号,这么写:@echo offfor%%i in (%0)do echo%%~ipause运⾏⼀览:再如:⽆限循环执⾏net user,即不断显⽰⽤户账户信息,直到你⼿动停⽌为⽌(Ctrl+C)@echo offnet user%0运⾏⼀览:再如:将⾃⾝复制到 D盘,并命名为 testx.bat@echo offecho Hello World!copy%0 d:\t estx.txt运⾏⼀览:%0⾼级⽤法:1、最简单的死循环程序,同时也是最简单的批处理程序:%0运⾏⼀览:不断重复显⽰⾃⾝路径,直到⼿动停⽌(Ctrl+C)2、⽤%0实现嵌套和递归不仅是 call 调⽤函数的时候可以使⽤参数,%0 同样可以如:@echo offset /a var=%1+1echo%var%if%var% lss 100 (%0 %var%)else pausesublime中:运⾏⼀览:从 1 显⽰到 100如果⽤ call,就变成:@echo off:loopset /a var=%1+1echo%var%if%var% lss 100call :loop %var% pausesublime中:效果⼀样【made by siwuxie095】。

BAT批处理脚本教程

BAT批处理脚本教程

BAT批处理脚本教程1.BAT脚本的基本语法一个最简单的BAT脚本如下所示:```echo Hello, World!pause```2.变量和参数在 BAT 脚本中,可以使用变量来存储和操作数据。

变量的定义使用`set` 命令,如下所示:```set variable_name=value```使用变量的值时,需要使用 `%` 符号将变量名括起来,如`%variable_name%`。

脚本可以通过命令行参数接收外部传递进来的值。

使用`%n`表示第n 个参数,其中n是从1开始的整数。

3.控制流语句控制流语句用于根据条件执行不同的命令。

常用的控制流语句有`if` 和 `for`。

`if` 语句可以根据条件执行不同的命令块。

使用语法如下:```if conditionelse````for` 语句用于循环执行命令块。

使用语法如下:``````4.文件和文件夹操作BAT 脚本可以通过命令执行文件和文件夹的操作。

常用的文件和文件夹操作命令有 `copy`、`del`、`mkdir`、`rmdir`等。

`copy` 命令用于复制文件,语法如下:```copy source_file destination_file````del` 命令用于删除文件,语法如下:```del file````mkdir` 命令用于创建文件夹,语法如下:```mkdir folder````rmdir` 命令用于删除文件夹,语法如下:```rmdir folder```5.实例以下是一个简单的BAT脚本示例,用于批量重命名文件夹中的文件:```setlocal enabledelayedexpansionset folder_path=C:\Path\To\Folderset new_name=NewNamefor %%f in (%folder_path%\*) doset "filename=%%~nf"ren "%%f" "!filename:%folder_path%=%new_name%!"echo Done!pause```该脚本首先定义了要操作的文件夹路径和新名称。

批处理学习第二节(系统变量以及自定义变量)

批处理学习第二节(系统变量以及自定义变量)

批处理学笔记批处理中的变量1、变量分为两类:"系统变量"和"自定义变量"系统变量:他们的值由系统根据事先定义的条件自动赋值;也就是这些变量系统已经给他们定义了值;不需要我们来给它赋值,我们只需要调用就可以了!要查看这些系统变量在cmd中输入set就显示出来了!2、这么多系统变量我们如何知道它的值是什么呢?例子:echo %WINDIR% 输出windowsecho %PROCESSOR_LEVEL% 输出值为6windir变量名,不是随便输入的!就这样我们就能显示变量的值了3、创建一个文件echo hfhf >D:\1.bat举一个例子:比如我们复制文件到当前账号的启动目录这样做:copy D:\1.bat "%USERPROOFILE%\ [开始]菜单\程序\启动\"%USERPROOFILE%返回当前用户的的主目录,注意有空格的目录要用双引号引起来;这些变量名;重新启动之后也会存在,并不会消失,我们能不能创建这样不会消失的系统变量呢?可以,使用setx命令就可以了setx test 我是值解析:test是变量的名字我是值是值这样我们就建立了一个重启之后不会消失的变量。

setx命令只有在2003系统才有4、2003:下我的电脑——属性——高级——环境变量XP:只能手动的建立以上这些系统变量只是返回一些具体的数值5、还有一些系统变量,他们代表着一个意思,或者一个操作;他们分别是%0 %1 %2 %3 %4 %5 %6……一直到%9和还有一个%* %0 这个有点特殊,有几层意思,我们先将%1到%9的意思%1 返回批处理的第一个参数%2 返回批处理的第二个参数%3---%9 依次类推返回批处理的参数?到底怎么个返回法?把代码保存为test.bat放在C盘下面例子:@echo offecho %1 %2 %3 %4echo %1echo %2echo %3echo %4进入CMD 输入cd C:\然后输入test.bat 我是第一个参数我是第二个参数我是第三个参数我是第四个参数注意中间的空格我们会看到这样的结果:我是第一个参数我是第二个参数我是第三个参数我是第四个参数我是第一个参数我是第二个参数我是第三个参数我是第四个参数对比一下代码,%1 就是我是第一个参数%2就是我是第二个参数这些%1---%9可以让批处理也能带参数运行,打打提高批处理功能!6、还有一个%*是什么呢?他的作用不是很大,返回全部参数!例子:@echo offecho %*同样保存为test.bat文件放置到C盘下然后输入我是第一个参数我是第二个参数我是第三个参数我是第四个参数这样会直接把所有的参数全部返回来,那就不用再写,%1 %2 %3 %47、%0 不是返回参数的值,有两层意思!第一层:返回批处理的所在的绝对路径例子:@echo offecho %0pause保存为bat 双击执行第二层意思:无线循环执行BA T自己例子:@echo offnet user%0无限循环执行net user 直到你手动停止位置为什么有这个意思,当我们把这个%0 加到批处理的最后一行这样当他执行的时候,就把执行的批处理文件,在执行一次;因为%0返回的就是当前的批处理的绝对路径比如当前的批处理文件的路径是:D:\1.bat那我们把%0加入到文件的最后也就相当于在最后加上了D:\1.bat 这些代码以上就是系统中的系统变量现在说自定义变量要使用自定义变量就得使用set命令例子:@echo offset var=我是值echo %var%pause就会打印出:我是值var加上%这样才会认识是一个变量var为变量名,=号右边的就是要给变量赋的值若果我们想让用户手工输入变量的值而不是在代码里面指定可以用set命令可以用set命令的/p参数例子;@echo offset /p var=请输入变量的值echo %var%pausevar是变量名=号右侧的是提示语不是变量的值变量的值由我们运行后自己用键盘输入!。

批处理 参数

批处理 参数

批处理参数一、什么是批处理?1.1 批处理的定义批处理(Batch Processing)是指一次性处理大量任务的方法。

它是计算机系统中的一种操作方式,用户可以事先编写好指令放入一个批处理文件中,再通过批处理器执行其中的命令。

批处理可以自动完成重复性的任务,提高工作效率,减少人工干预。

1.2 批处理的优点•1)自动化处理:批处理可以实现自动化处理,无需人工干预,减少了重复性劳动。

•2)高效率:批处理可以一次性处理大量任务,提高了处理效率。

•3)资源利用:批处理可以充分利用计算机的资源,实现任务的并行处理。

•4)任务追踪:批处理可以记录每个任务的执行情况,方便任务的追踪与管理。

1.3 批处理的应用领域批处理在各个领域都有广泛的应用,例如:•1)数据处理:批处理可以用于数据的清洗、加工、转换等。

•2)日志分析:批处理可以对大量的日志数据进行分析,提取有用信息。

•3)系统管理:批处理可以进行系统的备份、恢复、升级等操作。

•4)任务调度:批处理可以进行任务的排队、调度与分发。

二、批处理的参数2.1 批处理参数介绍批处理可以通过不同的参数实现不同的功能,下面介绍几个常用的批处理参数:•1)/C:执行完命令后关闭命令窗口。

•2)/D:不执行批处理命令,默认为执行。

•3)/E:禁用命令扩展。

•4)/Q:不显示命令执行过程。

•5)/V:在执行命令前显示详细信息。

•6)/Y:在执行过程中不提示确认信息。

2.2 批处理参数的应用举例批处理参数可以根据具体的需求进行组合使用,下面举例说明:•1)执行命令并关闭命令窗口:cmd.exe /C echo "Hello, World!" & pause运行以上批处理命令后,会在命令窗口中输出”Hello, World!“,并在用户按下任意键后关闭窗口。

•2)禁用命令扩展并显示详细信息:cmd.exe /E:off /V:on运行以上批处理命令后,可以禁用命令的扩展功能,并在执行命令前显示详细信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录批处理进阶之变量和参数第一节基本概念1、数据类型2、常量和变量3、参数和参数变量第二节变量的分类1、环境变量2、参数变量3、迭代变量第三节SET命令详细用法1、显示、设置或删除环境变量2、/P 交互模式开关与菜单设计3、/A 数学开关与简单数学计算第四节增强的变量引用1、增强的环境变量引用2、增强的参数变量/循环变量引用第五节参数传递和漂移1、参数传递2、参数漂移第六节变量的局部化1、SETLOCAL和ENDLOCAL2、环境变量延迟扩展======================================================================第一节基本概念本节内容推荐有一定的批处理基础或者编程基础的人看。

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 生成。

%HOMEDRIVE% 系统返回连接到用户主目录的本地工作站驱动器号,基于主目录值设置。

用户主目录是在“本地用户和组”中指定的。

%HOMEPATH% 系统返回用户主目录的完整路径。

基于主目录值而设置。

用户主目录是在“本地用户和组”中指定的。

%HOMESHARE% 系统返回用户的共享主目录的网络路径。

基于主目录值而设置。

用户主目录是在“本地用户和组”中指定的。

%LOGONSERVER% 本地返回验证当前登录会话的域控制器的名称。

%NUMBER_OF_PROCESSORS% 系统指定安装在计算机上的处理器的数目。

%OS% 系统返回操作系统名称。

Windows 2000 显示其操作系统为Windows_NT。

%PATH% 系统指定可执行文件的搜索路径。

%PATHEXT% 系统返回操作系统认为可执行的文件扩展名的列表。

%PROCESSOR_ARCHITECTURE% 系统返回处理器的芯片体系结构。

值:x86 或IA64 基于Itanium%PROCESSOR_IDENTFIER% 系统返回处理器说明。

%PROCESSOR_LEVEL% 系统返回计算机上安装的处理器的型号。

%PROCESSOR_REVISION% 系统返回处理器的版本号。

%PROMPT% 本地返回当前解释程序的命令提示符设置。

由Cmd.exe 生成。

%RANDOM% 系统返回0 到32767 之间的任意十进制数字。

由Cmd.exe 生成。

%SYSTEMDRIVE% 系统返回包含Windows server operating system 根目录(即系统根目录)的驱动器。

%SYSTEMROOT% 系统返回Windows server operating system 根目录的位置。

%TEMP% 和%TMP% 系统和用户返回对当前登录用户可用的应用程序所使用的默认临时目录。

%TIME% 系统返回当前时间。

使用与time /t 命令相同的格式。

由Cmd.exe 生成。

有关time 命令的详细信息,请参阅Time。

%USERDOMAIN% 本地返回包含用户帐户的域的名称。

%USERNAME% 本地返回当前登录的用户的名称。

%USERPROFILE% 本地返回当前用户的配置文件的位置。

%WINDIR% 系统返回操作系统目录的位置。

要查看一个环境变量的值,可以这样使用:echo %WINDIR%应用实例:复制文件到当前帐号的启动目录里copy d:\1.cmd "%USERPROFILE%\「开始」菜单\程序\启动\"(2)自定义环境变量顾名思义,自定义环境变量是由用户定义的环境变量。

要使用自定义环境变量请使用SET命令。

例子:@echo offSET str=批处理教程echo %str%pause请注意,通过SET设置的环境变量如果不赋值,其初始值为“空字符串”。

怎么引用环境变量?(翻译自微软)要在命令行或脚本中引用变量环境的值,请将变量名包括在百分号之中(即%abc%形式)。

如果你不使用百分号,命令解释器会把它当成普通字符串来处理。

为变量定义值(即赋值)之后,请将变量名包括在百分号之中引用。

Cmd.exe搜索该变量名的所有实例,并用定义的变量值替换各个实例。

变量引用是不可递归的,即Cmd.exe只检查变量一次。

Cmd.exe就用变量的真实值替换%USERNAME%,这样就消除了为每个用户手动执行此任务的必要。

有关变量引用的更详细信息,请参阅FOR /?或Call /?。

2、参数变量什么是参数变量?我们先来看看一个批处理调用过程,A调用B,A是调用者,B是被调用者。

如果A要想传递参数,那么B必须要能接收参数。

为了能够让B接受外部的参数,批处理引入了一类新的变量(%1 %2 %3 ......一直到%9,%0),这类变量只用于接受外界传入的参数,他们就是参数变量。

另外,在标签段(即子过程)内也可以使用参数变量,用于批处理内部call调用时的参数传递。

综合这两种情况,参数变量总是出现在批处理中。

一句话:参数变量是在批处理(或子程序)中用来接收参数的变量。

参数变量的特点(1)系统预定义,可以直接使用;(2)不能在批处理内部对其直接赋值,只能从外部传入;参数变量虽然不能直接赋值,但是可以通过环境变量中转实现类似的效果:错误的用法@echo offSET /A %1=%1+1echo %1pause正确的用法@echo offSET /A a=%1,a=a+1echo %a%pause下面开始具体的讲解。

★(1)%1 用于接收传入的第一个参数;%2 用于接收传入的第二个参数;%3-%9依此类推。

传入参数时,以空格分隔参数,按顺序依次传递给%1、%2。

如果没有传入参数或者传入的参数数目不够,那么参数变量的值就是空字符串。

%* 指向批处理中的所有参数变量(%1…%9),一旦参数传递完成,%*的值也就自动确定了。

相关文档
最新文档