bat编程 系统变量
bat 循环 参数
bat循环参数在编程中,循环是一种常用的控制结构,用于重复执行一段代码。
在批处理脚本(bat)中,循环同样是一个重要的工具。
通过使用循环,我们可以更有效地处理一系列的操作。
在bat脚本中,常见的循环结构有for循环和while循环。
一、for循环for循环是bat脚本中最常用的循环结构,它可以根据指定的参数迭代指定的次数。
for循环的基本语法如下:```bashfor%%variablein(set)docommand```其中,%%variable是迭代变量,set是迭代参数列表,command是要执行的命令。
以下是一个简单的for循环示例,用于迭代一个目录下的所有文件:```bash@echoofffor%%fin(*)do(echo%%frem在这里执行你的操作)```在这个示例中,%%f是迭代变量,(*)是迭代参数列表,表示要遍历当前目录下的所有文件。
在do和done之间的部分是循环体,用于执行相应的操作。
二、while循环while循环是一种条件循环,当指定的条件为真时,循环会继续执行。
while 循环的基本语法如下:```bashwhile[条件]docommand```以下是一个while循环的示例,用于检查当前时间是否大于指定时间,如果是则输出一条消息:```bash@echooffsetlocalenabledelayedexpansionset"startTime=16:30"rem设置一个计数器变量set/acount=0:loopif%time%gt%startTime%(echo时间已超过指定时间!goto:endloop)else(rem在这里执行你的操作set/acount+=1)rem继续循环直到满足条件或达到最大次数goto:loop:endloop```在这个示例中,如果当前时间大于指定时间,则输出一条消息并跳出循环;否则,继续执行相应的操作并增加计数器变量的值。
BAT脚本编写教程(比较易懂和全面)
BAT脚本编写教程(⽐较易懂和全⾯)echo、@、call、pause、rem(⼩技巧:⽤::代替rem)是批处理⽂件最常⽤的⼏个命令,我们就从他们开始学起。
echo 表⽰显⽰此命令后的字符echo off 表⽰在此语句后所有运⾏的命令都不显⽰命令⾏本⾝@与echo off相象,但它是加在每个命令⾏的最前⾯,表⽰运⾏时不显⽰这⼀⾏的命令⾏(只能影响当前⾏)。
call 调⽤另⼀个批处理⽂件(如果不⽤call⽽直接调⽤别的批处理⽂件,那么执⾏完那个批处理⽂件后将⽆法返回当前⽂件并执⾏当前⽂件的后续命令)。
pause 运⾏此句会暂停批处理的执⾏并在屏幕上显⽰Press any key to continue...的提⽰,等待⽤户按任意键后继续rem 表⽰此命令后的字符为解释⾏(注释),不执⾏,只是给⾃⼰今后参考⽤的(相当于程序中的注释)。
例1:⽤edit编辑a.bat⽂件,输⼊下列内容后存盘为c:\a.bat,执⾏该批处理⽂件后可实现:将根⽬录中所有⽂件写⼊ a.txt中,启动UCDOS,进⼊WPS等功能。
批处理⽂件的内容为: 命令注释: @echo off 不显⽰后续命令⾏及当前命令⾏ dir c:\*.* >a.txt 将c盘⽂件列表写⼊a.txt call c:\ucdos\ucdos.bat 调⽤ucdos echo 你好 显⽰"你好" pause 暂停,等待按键继续 rem 准备运⾏wps 注释:准备运⾏wps cd ucdos 进⼊ucdos⽬录 wps 运⾏wps 批处理⽂件的参数批处理⽂件还可以像C语⾔的函数⼀样使⽤参数(相当于DOS命令的命令⾏参数),这需要⽤到⼀个参数表⽰符“%”。
%[1-9]表⽰参数,参数是指在运⾏批处理⽂件时在⽂件名后加的以空格(或者Tab)分隔的字符串。
变量可以从%0到%9,%0表⽰批处理命令本⾝,其它参数字符串⽤%1到%9顺序表⽰。
bat操作基础 windows下的入门级批处理编程手册
BAT批处理文件语法==== 注=======================================.bat是dos下的批处理文件.cmd是nt内核命令行环境的另一种批处理文件从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。
所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。
甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。
===================================首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。
==== 注===================批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的应用越来越"边缘化"。
所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。
========================其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。
当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。
批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。
bat命令注释
目录第一章批处理基础第一节常用批处理内部命令简介1、REM 和::2、ECHO 和@3、PAUSE4、ERRORLEVEL5、TITLE6、COLOR7、mode 配置系统设备8、GOTO 和:9、FIND10、START11、assoc 和ftype12、pushd 和popd13、CALL14、shift15、IF16、setlocal 与变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION启动或停用延缓环境变量扩展名。
)17、A TTRIB显示或更改文件属性第二节常用特殊符号1、@命令行回显屏蔽符2、%批处理变量引导符3、> 重定向符4、>>重定向符5、<、>、<& 重定向符6、|命令管道符7、^转义字符8、组合命令9、& 组合命令10、||组合命令11、\"\"字符串界定符12、, 逗号13、; 分号14、() 括号15、! 感叹号第二章FOR命令详解一、基本格式二、参数/d仅为目录三、参数/R递归(文件名)四、参数/L迭代数值范围五、参数/F迭代及文件解析第三章FOR命令中的变量一、~I- 删除任何引号(\"),扩展%I二、%~fI- 将%I 扩展到一个完全合格的路径名三、%~dI- 仅将%I 扩展到一个驱动器号四、%~pI- 仅将%I 扩展到一个路径五、%~nI- 仅将%I 扩展到一个文件名六、%~xI- 仅将%I 扩展到一个文件扩展名七、%~sI- 扩展的路径只含有短名八、%~aI- 将%I 扩展到文件的文件属性九、%~tI- 将%I 扩展到文件的日期/时间十、%~zI- 将%I 扩展到文件的大小十一、%~$PATH:I第四章批处理中的变量一、系统变量二、自定义变量第五章set命令详解一、用set命令设置自定义变量二、用set命令进行简单计算三、用set命令进行字符串处理1、字符串替换2、字符串截取第六章if命令讲解第一种用法:IF [NOT] ERRORLEVEL number command第二种用法:IF [NOT] string1==string2 command第三种用法:IF [NOT] EXIST filename command第四种用法:IF增强的用法第七章DOS编程高级技巧一、界面设计二、if…else…条件语句三、循环语句四、子程序五、用ftp命令实现自动下载六、用7-ZIP实现命令行压缩和解压功能七、调用VBScript程序八、将批处理转化为可执行文件九、时间延迟1、利用ping命令延时2、利用for命令延时3、利用vbs延迟函数,精确度毫秒,误差1000毫秒内4、仅用批处理命令实现任意时间延迟,精确度10毫秒,误差50毫秒内十、模拟进度条十一、特殊字符的输入及应用十二、随机数(%random%)的应用技巧十三、变量嵌套与命令嵌套1、更正了所有的错别字,适当排版,增加条理性。
Windowsbat脚本编程经验总结
Windowsbat脚本编程经验总结本⽂使⽤先注释说明经验后⽤代码说明的⽅式⼀段段记录bat脚本注释符号有::或者rem等,置于句⾸注释本⾏bat脚本分cmd命令和脚本⽂件,同样的命令在符号写法上会有稍微的区别,如重定向符 >和 >>等::echo off 表⽰在此语句后所有运⾏的命令都不显⽰命令⾏本⾝,echo on 表⽰在此语句后所有运⾏的命令都显⽰命令⾏本⾝,@加在每个命令⾏的最前⾯,表⽰运⾏时不显⽰这⼀⾏的命令⾏@echo off::bat脚本⼀⾏只能有⼀个命令,甚⾄结束空格还必须放下⼀⾏,但使⽤了变量延迟扩展命令之后可以⼀⾏多个命令,但不建议使⽤。
setlocal enabledelayedexpansion::后续命令使⽤的是:UTF-8编码chcp 65001::echo 表⽰输出后⾯的字符串echo 中⽂::%cd%代表当前路径echo 当前路径为: %cd%:: 输出⽂件⽬录的树形结构到⽂件tree F: > tree_list.txt:: rem注释中不能使⽤重定向符和管道符rem 显⽰⽂本内容type tree_list.txtrem 搜索当前⽬录下所有的⽂本⽂件rem for循环中可以给变量赋值但不能使⽤,只能调⽤常量或%%i,就是说刚赋值的变量变化不会体现。
if句中也是rem 刚赋值的变量变化不会体现。
if句中也是!rem 直接分析字符串要加引号!!rem for循环do的括号的内容⼀定不要放到和for同⼀⾏,rem 因为bat脚本会强识别到空格,如果最后⼀句是赋值语句跟了空格和括号会多赋⼀个空格到变量中去,且很难发现错误rem for循环中/f参数是⽐较常⽤的,⽤于按序取出⽂件中⾏交给后续处理for %%i in (*.txt) do echo "%%i"::echo=输出空⽩⾏echo=rem /p 是让你输⼊rem /a 命令⾏开关指定等号右边的字符串为被评估为数字表达式。
BAT教程大全
BAT教程:第一节(批处理基础)各位非常批处理的朋友们,现在我们开始学习批处理新手系列教学的第一课!(适合没有编程经验的朋友)按照惯例,先讲一下什么是"批处理".顾名思义,批处理就是把一批或者说是一条条命令放在一个文本里,然后批量执行!执行这一批命令的文件的扩展名是BA T或者CMD,把任何一批命令放入在有这样扩展名的文件里,执行时里面的命令就会一条条的执行完,当然我们还可以在其中加入一些逻辑判断的语句,让里面的命令在满足一定条件时执行指定的命令.了解了大概意思后,我们正式开始学习.先看一个简单的例子!@echo offecho "欢迎来到非常BA T!"pause把上面的3条命令保存为test.bat或者test.cmd然后执行,他就会在屏幕上显示二行话:"欢迎来到非常BAT!请按任意键继续. . ."这就是一个简单批处理文件了,我们来分析一下.这个批处理文件一共就用了2条命令"echo"和"pause"还有一个特殊符号"@"@符号在批处理中的作用是关闭当前行命令的回显,也就是不显示执行的是什么命令,只显示命令的结果!你可以执行下面这个批处理文件来理解,保存为*.bat或者*.CMD@echo你好echo你好@pauseecho命令的作用有两个,一个是在CMD上回显一行内容.如:echo "欢迎来到非常BAT!",还一个是关闭命令的回显:echo offecho off的作用就相当于在每条命令前面加一个@符号,这样所有的命令将只会显示结果不显示命令.我们在echo off这命令前加一个@符号是为了不让echo off这条命令本身显示出来,让批处理更完美!pause命令就是暂停的意思,防止批处理执行完后直接退出!执行pause命令后会自动在CMD 里显示"请按任意键继续. . ."这样一行话!从上面这个简单的批处理中,我们可以发现其实批处理就是运用一些含有特殊意义的符号和一些完成指定功能的命令组合而成,那么在批处理中有多少这样的特殊符号和功能命令呢?我们现在就来仔细了解一下一些最常用的!(以下内容来源网络,请各位仔细阅读,好进入下节的实例说明)批处理的常见命令REMECHOGOTOCALLPAUSEIF还有(FOR,SETLOCAL,SHIFT)这几个命令比较难,不适合写在基础篇,以后说明!批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BA T。
bat语法点滴批处理Set命令详解让你理解set命令
bat 语法点滴批处理 Set 命令详解让你理解set命令2011年05月06日星期五 15:301.转义符 ^^" = "2.另外,FOR 中的变量已被增强,我们可以使用下列句法来引用变量:%~I - 扩充 %I 为删除外围 " 引号(有就删)%~fI - 扩充 %I 为一个完整的路径%~dI - 仅扩充 %I 为一个驱动器号%~pI - 仅扩充 %I 为一个路径%~nI - 仅扩充 %I 为一个文件名%~xI - 仅扩充 %I 为一个文件扩展名%~sI - 扩充 %I 为完整的短名路径%~aI - 扩充 %I 为文件的属性(ARSH)%~tI - 扩充 %I 为文件的日期时间(修改时间)%~zI - 扩充 %I 为文件的大小(字节计)%~$PATH:I - ◎变量可以是其他的,如:WinDIR、ProgramFiles 等在环境变量 PATH 指定的路径中搜索文件,扩充 %I 为找到的第一个文件的完整路径;若未找到文件,则扩充 %I 为空。
组合扩展参数效果:%~dpI - 仅扩充 %I 为驱动器号和路径%~nxI - 仅扩充 %I 为文件名加扩展名%~fsI - 扩充 %I 为完整的短名路径(同 %~sI)%~dp$PATH:I - 搜索变量 PATH 中的路径,仅扩充 %I 为找到的第一个文件驱动器号和路径。
%~ftzaI - 扩充 %I 为类似 DIR 命令的输出格式以上例子中,%I 和 PATH 可用其他有效的变量替代。
%~ 百分号加波浪线用法是后面必须跟有效的 FOR 变量名。
推荐使用诸如 %I 的大写变量名,这样不仅易读且可避免混淆。
◎当然这是因人而异的。
如果是for中的变量例如%%i 可以写成%%~ni网上看了很多的set命令,但对于 set /a这类参数不是很详细,脚本之家编辑特从网上收集一些实际的例子等,结合在一起,让大家能快速的理解。
set,E文翻译过来就是“设置”的意思,相当于数学里的“令”。
bat编程 系统变量
一、系统变量他们的值由系统将其根据事先定义的条件自动赋值,也就是这些变量系统已经给他们定义了值,不需要我们来给他赋值,我们只需要调用而以! 我把他们全部列出来!%ALLUSERSPROFILE% 本地返回“所有用户”配置文件的位置。
%APPDATA% 本地返回默认情况下应用程序存储数据的位置。
%CD% 本地返回当前目录字符串。
%CMDCMDLINE% 本地返回用来启动当前的Cmd.exe 的准确命令行。
%CMDEXTVERSION% 系统返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME% 系统返回计算机的名称。
%COMSPEC% 系统返回命令行解释器可执行程序的准确路径。
%DATE% 系统返回当前日期。
使用与date /t 命令相同的格式。
由Cmd.exe 生成。
有关date 命令的详细信息,请参阅Date。
%ERRORLEVEL% 系统返回上一条命令的错误代码。
通常用非零值表示错误。
%HOMEDRIVE% 系统返回连接到用户主目录的本地工作站驱动器号。
基于主目录值而设置。
用户主目录是在“本地用户和组”中指定的。
%HOMEPATH% 系统返回用户主目录的完整路径。
基于主目录值而设置。
用户主目录是在“本地用户和组”中指定的。
%HOMESHARE% 系统返回用户的共享主目录的网络路径。
基于主目录值而设置。
用户主目录是在“本地用户和组”中指定的。
%LOGONSERVER% 本地返回验证当前登录会话的域控制器的名称。
%NUMBER_OF_PROCESSORS% 系统指定安装在计算机上的处理器的数目。
%OS% 系统返回操作系统名称。
Windows 2000 显示其操作系统为Windows_NT。
%PATH% 系统指定可执行文件的搜索路径。
%PATHEXT% 系统返回操作系统认为可执行的文件扩展名的列表。
%PROCESSOR_ARCHITECTURE% 系统返回处理器的芯片体系结构。
值:x86 或IA64 基于Itanium%PROCESSOR_IDENTFIER% 系统返回处理器说明。
bat(续六)-windows批处理set命令
bat(续六)-windows批处理set命令windows批处理set命令[设置变量]格式:set 变量名=变量值详细:被设定的变量以%变量名%引⽤[取消变量]格式:set 变量名=详细:取消后的变量若被引⽤%变量名%将为空[展⽰变量]格式:set 变量名详细:展⽰以变量名开头的所有变量的值[列出所有可⽤的变量]格式:set[计算器]格式:set /a 表达式⽰例:set /a 1+2*3 输出 7!注意!set不能⽤在复合语句⾥⾯⽐如if 1==1 set a=2或者for %%i in (a) do set a=2预定义的变量下⾯是些已经被底层定义好可以直接使⽤的变量:不会出现在 SET 显⽰的变量列表中%CD% - 扩展到当前⽬录字符串。
%DATE% - ⽤跟 DATE 命令同样的格式扩展到当前⽇期。
%TIME% - ⽤跟 TIME 命令同样的格式扩展到当前时间。
%RANDOM% - 扩展到 0 和 32767 之间的任意⼗进制数字。
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。
%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。
%CMDCMDLINE% - 扩展到调⽤命令处理器的原始命令⾏。
%0 bat的完整路径名如"C:\Windows\system32\xxx.bat"%1 bat参数1依次类推%2参数2...%path% - 当前的环境变量。
以分号隔开的路径列表,路径可包含空格,可以以'\'结尾, 可以以双引号包围之。
扩展变量@ 与%i相关的变量(bat参数或者for循环的%i)假设⽂件为C:\Documents and Settings\jinsun\桌⾯\ParseSinglePkgs.bat%0 C:\Documents and Settings\jinsun\桌⾯\ParseSinglePkgs.bat%~dp0 C:\Documents and Settings\jinsun\桌⾯\%cd% C:\Documents and Settings\jinsun\桌⾯%~nx0 ParseSinglePkgs.bat%~n0 ParseSinglePkgs%~x0 .bat@ 与%VAR%相关的变量%VAR:str1=str2% 会将VAR中的str1替换为str2(str2如果为空则可以达到删除的效果,str1前可以加*,变量%ABC:*B=%是C) %VAR:~0,-2% 会提取VAR 变量的所有字符,除了最后两个%VAR:~-2% 会提取VAR 变量的最后两个系统变量:他们的值由系统将其根据事先定义的条件⾃动赋值,我们只需要调⽤⽽已%ALLUSERSPROFILE% (allusersprofile)本地返回“所有⽤户”配置⽂件的位置。
批处理学习第二节(系统变量以及自定义变量)
批处理学笔记批处理中的变量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是变量名=号右侧的是提示语不是变量的值变量的值由我们运行后自己用键盘输入!。
bat脚本学习教程(珍藏版)
Bat脚本基础教程TYPE显示文本文件的内容。
[drive:][path]filenameSETLOCAL开始批处理文件中环境改动的本地化操作。
在执行SETLOCAL 之后所做的环境改动只限于批处理文件。
要还原原先的设置,必须执行ENDLOCAL。
达到批处理文件结尾时,对于该批处理文件的每个尚未执行的SETLOCAL 命令,都会有一个隐含的ENDLOCAL 被执行。
SETLOCAL如果命令扩展名被启用,SETLOCAL 会如下改变:SETLOCAL 批命令现在可以接受可选参数:ENABLEEXTENSIONS / DISABLEEXTENSIONS启动或停用命令处理器扩展名。
详细信息,请参阅CMD /?.ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION启动或停用延缓环境变量扩展名.详细信息,请参阅SET /?。
无论在SETLOCAL 命令之前它们的设置是什么,这些修改会一直保留到匹配的ENDLOCAL 命令。
如果有一个参数,SETLOCAL 命令将设置ERRORLEVEL 的值。
如果有两个有效参数中的一个,该值则为零。
用下列技巧,您可以在批脚本中使用这个来决定扩展名是否可用:VERIFY OTHER 2>nulSETLOCAL ENABLEEXTENSIONSIF ERRORLEVEL 1 echo Unable to enable extensions这个方法之所以有效,是因为在CMD.EXE 的旧版本上,SETLOCAL不设置ERRORLEVEL 值。
具有不正确参数的VERIFY 命令将ERRORLEVEL 值初始化成非零值。
POPD命令选项到保存在PUSHD 命令里的目录。
如果命令扩展名被启用,从推目录堆栈POPD 驱动器时,POPD命令会删除PUSHD 创建的临时驱动器号。
PUSHD保存当前目录以供POPD 命令使用,然后改到指定的目录。
bat条件语句
在BAT(Batch)脚本中,条件语句用于根据特定条件执行不同的操作。
BAT脚本是Windows操作系统中的一种批处理脚本,用于自动化执行一系列命令。
在BAT脚本中,条件语句使用`IF`关键字来定义。
下面是一些常见的条件语句示例:
1. 判断两个字符串是否相等:
```bash
IF "%var1%"=="%var2%" (
REM 两个字符串相等时的操作
) ELSE (
REM 两个字符串不相等时的操作
)
```
2. 判断一个文件是否存在:
```bash
IF EXIST "filepath" (
REM 文件存在时的操作
) ELSE (
REM 文件不存在时的操作
)
```
3. 判断一个变量是否定义了:
```bash
IF DEFINED var (
REM 变量已定义时的操作
) ELSE (
REM 变量未定义时的操作
)
```
4. 判断一个命令的执行结果是否成功:
```bash
IF %errorlevel%==0 (
REM 命令执行成功时的操作
) ELSE (
REM 命令执行失败时的操作
)
```
这些示例只是条件语句的基本用法,你可以根据具体需求进行更复杂的条件判断和操作。
在条件语句中,你可以使用其他命令和测试操作符来实现更复杂的条件判断。
windows下使用批处理设置环境变量
windows下使⽤批处理设置环境变量1. 设置临时环境变量set BAT_HOME=c:\bat此命令只对当前窗⼝有效,批处理或cmd窗⼝⼀关闭,变量就恢复原来的值了。
2. 设置永久环境变量⽅法⼀setx BAT_HOME C:\bat注意:此命令只会将变量添加到⽤户环境变量中。
⽅法⼆setx /M BAT_HOME C:\bat当前⽤户执⾏时,有可能会提⽰”错误: 拒绝访问注册表路径。
”,如下要使⽤管理员⾝份执⾏,才能执⾏成功。
⽅法三通过注册表设置::添加环境变量 BAT_HOME@echo offecho添加 bat 环境变量set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentset evname=BAT_HOMEset batpath=c:\batreg add "%regpath%" /v %evname% /d %batpath% /fpause>nul必须以管理员权限运⾏::删除环境变量 BAT_HOME@echo offecho删除 bat 环境变量set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentset evname=BAT_HOMEreg delete "%regpath%" /v "%evname%" /fpause>nul(百度过程中,总结如上,win10 家庭版亲测有效)。
bat中mem语句
bat中mem语句摘要:一、背景介绍1.Bat 文件的基本概念2.Bat 文件在Windows 系统中的作用二、mem 语句介绍1.mem 语句的语法结构2.mem 语句的作用3.mem 语句的参数及含义三、mem 语句的用法示例1.创建简单的Bat 文件2.使用mem 语句为Bat 文件添加内容3.运行Bat 文件并查看结果四、mem 语句的注意事项1.语法规范2.参数顺序3.特殊字符的处理正文:一、背景介绍Bat 文件,全称“批处理文件”,是一种在Windows 操作系统中广泛应用的文本文件。
它包含了一系列的命令和操作,用于实现特定的功能。
通过Bat 文件,用户可以自动化执行一些常见的任务,例如文件操作、系统管理、网络设置等。
在批处理文件中,mem 语句是一个重要的组成部分,用于为Bat 文件添加内容。
二、mem 语句介绍mem 语句是Bat 文件中用于存储信息的命令。
它的语法结构如下:```mem [盘符:][路径] 文件名[, 变量名]```其中,盘符、路径和文件名表示存储信息的文件;变量名表示用于存储文件内容的变量。
mem 语句的作用是将文件的内容读取到变量中,以便后续使用。
三、mem 语句的用法示例为了更好地理解mem 语句的用法,我们通过一个简单的示例来说明。
首先,创建一个名为“example.bat”的Bat 文件,然后在该文件中添加以下内容:```@echo offsetlocal enabledelayedexpansionrem 定义变量set var1=Helloset var2=Worldrem 使用mem 语句读取文件内容mem c:example.txt var1mem c:example.txt var2rem 显示变量内容echo %var1%echo %var2%```在这个示例中,我们首先使用`setlocal`命令启用局部变量,然后定义了两个变量`var1`和`var2`。
bat 语法点滴 批处理 Set 命令详解 让你理解set命令
bat 语法点滴批处理 Set 命令详解让你理解set命令2011年05月06日星期五 15:301.转义符 ^^" = "2.另外,FOR 中的变量已被增强,我们可以使用下列句法来引用变量:%~I - 扩充 %I 为删除外围 " 引号(有就删)%~fI - 扩充 %I 为一个完整的路径%~dI - 仅扩充 %I 为一个驱动器号%~pI - 仅扩充 %I 为一个路径%~nI - 仅扩充 %I 为一个文件名%~xI - 仅扩充 %I 为一个文件扩展名%~sI - 扩充 %I 为完整的短名路径%~aI - 扩充 %I 为文件的属性(ARSH)%~tI - 扩充 %I 为文件的日期时间(修改时间)%~zI - 扩充 %I 为文件的大小(字节计)%~$PATH:I - ◎变量可以是其他的,如:WinDIR、ProgramFiles 等在环境变量 PATH 指定的路径中搜索文件,扩充 %I 为找到的第一个文件的完整路径;若未找到文件,则扩充 %I 为空。
组合扩展参数效果:%~dpI - 仅扩充 %I 为驱动器号和路径%~nxI - 仅扩充 %I 为文件名加扩展名%~fsI - 扩充 %I 为完整的短名路径(同 %~sI)%~dp$PATH:I - 搜索变量 PATH 中的路径,仅扩充 %I 为找到的第一个文件驱动器号和路径。
%~ftzaI - 扩充 %I 为类似 DIR 命令的输出格式以上例子中,%I 和 PATH 可用其他有效的变量替代。
%~ 百分号加波浪线用法是后面必须跟有效的 FOR 变量名。
推荐使用诸如 %I 的大写变量名,这样不仅易读且可避免混淆。
◎当然这是因人而异的。
如果是for中的变量例如%%i 可以写成%%~ni网上看了很多的set命令,但对于 set /a这类参数不是很详细,脚本之家编辑特从网上收集一些实际的例子等,结合在一起,让大家能快速的理解。
set,E文翻译过来就是“设置”的意思,相当于数学里的“令”。
BATfor循环
BATfor循环@echo offecho.Current User is '%USERNAME%'echo.This script must run with administrative privileges to register ActiveX DLLsecho.Start register the DLL files.........please wait.for %%A in (A,B,C) do echo .hello %%Arem 两个::相当于注释。
与rem相同,只是执⾏时不显⽰::后的内容。
⼀个:相当于标号定义。
该⾏也不会执⾏,只是给goto语句跳转⽤的。
cd %~dp0set "filemask=*.dll"for %%A in (%filemask%) do regsvr32 %%A /secho.-----------echo.-------echo.----donePAUSE第⼀章批处理基础第⼀节常⽤批处理内部命令简介批处理定义:顾名思义,批处理⽂件是将⼀系列命令按⼀定的顺序集合为⼀个可执⾏的⽂本⽂件,其扩展名为BAT或者CMD。
这些命令统称批处理命令。
⼩知识:可以在键盘上按下Ctrl+C组合键来强⾏终⽌⼀个批处理的执⾏过程。
了解了⼤概意思后,我们正式开始学习.先看⼀个简单的例⼦!@echo offecho “欢迎来到⾮常BAT!”pause把上⾯的3条命令保存为⽂件test.bat或者test.cmd然后执⾏,他就会在屏幕上显⽰以下⼆⾏话:欢迎来到⾮常BAT!请按任意键继续…这就是⼀个简单批处理⽂件了,这个批处理⽂件⼀共就⽤了2条命令 “echo” 和”pause” 还有⼀个特殊符号”@”从上⾯这个简单的批处理中,我们可以发现其实批处理就是运⽤⼀些含有特殊意义的符号和⼀些完成指定功能的命令组合⽽成,那么在批处理中有多少这样的特殊符号和功能命令呢?我们现在就来仔细了解⼀下⼀些最常⽤的!(以下内容来源⽹络,请各位仔细阅读,好进⼊下节的实例说明)======================================================批处理的常见命令(未列举的命令还⽐较多,请查阅帮助信息)1、REM 和 ::2、ECHO 和 @3、PAUSE4、ERRORLEVEL5、TITLE6、COLOR7、mode 配置系统设备8、GOTO 和 :9、FIND10、START11、assoc 和 ftype12、pushd 和 popd13、CALL14、shift15、IF16、setlocal 与变量延迟17、ATTRIB 显⽰或更改⽂件属性介绍命令1、REM 和 ::REM为注释命令,⼀般⽤来给程序加上注解,该命令后的内容不被执⾏,但能回显。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、系统变量他们的值由系统将其根据事先定义的条件自动赋值,也就是这些变量系统已经给他们定义了值,不需要我们来给他赋值,我们只需要调用而以! 我把他们全部列出来!%ALLUSERSPROFILE% 本地返回“所有用户”配置文件的位置。
%APPDATA% 本地返回默认情况下应用程序存储数据的位置。
%CD% 本地返回当前目录字符串。
%CMDCMDLINE% 本地返回用来启动当前的Cmd.exe 的准确命令行。
%CMDEXTVERSION% 系统返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME% 系统返回计算机的名称。
%COMSPEC% 系统返回命令行解释器可执行程序的准确路径。
%DATE% 系统返回当前日期。
使用与date /t 命令相同的格式。
由Cmd.exe 生成。
有关date 命令的详细信息,请参阅Date。
%ERRORLEVEL% 系统返回上一条命令的错误代码。
通常用非零值表示错误。
%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% 系统和用户返回对当前登录用户可用的应用程序所使用的默认临时目录。
有些应用程序需要TEMP,而其他应用程序则需要TMP。
%TIME% 系统返回当前时间。
使用与time /t 命令相同的格式。
由Cmd.exe 生成。
有关time 命令的详细信息,请参阅Time。
%USERDOMAIN% 本地返回包含用户帐户的域的名称。
%USERNAME% 本地返回当前登录的用户的名称。
%USERPROFILE% 本地返回当前用户的配置文件的位置。
%WINDIR% 系统返回操作系统目录的位置。
这么多系统变量,我们如何知道他的值是什么呢?在CMD里输入echo %WINDIR%这样就能显示一个变量的值了!举个实际例子,比如我们要复制文件到当前帐号的启动目录里就可以这样copy d:\1.bat "%USERPROFILE%\「开始」菜单\程序\启动\"%USERNAME% 本地返回当前登录的用户的名称。
注意有空格的目录要用引号引起来另外还有一些系统变量,他们是代表一个意思,或者一个操作!他们分别是%0 %1 %2 %3 %4 %5 ......一直到%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可以让批处理也能带参数运行,大大提高批处理功能!还有一个%* 他是什么呢?他的作用不是很大,只是返回参数而已,不过他是一次返回全部参数的值,不用在输入%1 %2来确定一个个的例子@echo offecho %*同样保存为test.bat 放到C盘进入CMD,输入cd c:\然后输入test.bat 我是第一个参数我是第二个参数我是第三个参数我是第四个参数可以看到他一次把全部参数都显示出来了好现在开始讲那个比较特殊的%0%0 这个不是返回参数的值了,他有两层意思!第一层意思:返回批处理所在绝对路径例子:@echo offecho %0pause保存为test.BAT放在桌面运行,会显示如下结果"C:\Documents and Settings\Administrator\桌面\test.bat"他把当前批处理执行的所在路经打印出来了,这就是返回批处理所在绝对路径的意思第二层意思:无限循环执行BAT例子:@echo offnet user%0保存为BAT执行,他就会无限循环执行net user这条命令,直到你手动停止.龙卷风补充:其实%0就是第一参数%1前面那个参数,当然就是批处理文件名(包括路径)。
以上就是批处理中的一些系统变量,另外还有一些变量,他们也表示一些功能,FOR命令中的那些就是,FOR变量已经说过,就不讲了.二、自定义变量故名思意,自定义变量就是由我们来给他赋予值的变量要使用自定义变量就得使用set命令了,看例子.@echo offset var=我是值echo %var%pause保存为BAT执行,我们会看到CMD里返回一个"我是值"var为变量名,=号右变的是要给变量的值这就是最简单的一种设置变量的方法了如果我们想让用户手工输入变量的值,而不是在代码里指定,可以用用set 命令的/p参数例子:@echo offset /p var=请输入变量的值echo %var%pausevar变量名=号右边的是提示语,不是变量的值变量的值由我们运行后自己用键盘输入!第五章set命令详解在上一贴中简单的介绍了一下SET设置自定义变量的作用,现在来具体讲一下set的其他功能. 一、用set命令设置自定义变量显示、设置或删除cmd.exe 环境变量。
SET [variable]=[string]variable 指定环境变量名。
string 指定要指派给变量的一系列字符串。
要显示当前环境变量,键入不带参数的SET。
SET 命令不允许变量名含有等号。
注意:以下用法将清除变量variable的值,使其变成未定义状态。
SET variable=上面等号后面无任何符号,如果写成SET variable="",此时变量值并不为空,而是等于两个引号,即""例子:@echo offset var=我是值echo %var%pause请看set var=我是值,这就是BAT直接在批处理中设置变量的方法!set 是命令var是变量名=号右边的"我是值"是变量的值在批处理中我们要引用这个变就把var变量名用两个%(百分号)扩起来,如%var%SET还可以提供一个交互界面,让用户自己输入变量的值,然后我们在来根据这个值来做相应操作,现在我就来说说SET的这种语法,只需要加一个"/P"参数就可以了!SET /P variable=[promptString]例子:@echo offset /p var=请输入变量的值:echo 您输入了%var% ~_~pauseset /p 是命令语法var是变量名=号右边的"请输入变量的值: ",这个是提示语,不是变量的值了! 运行后,我们在提示语后面直接输入1,就会显示一行您输入了 1 ~_~现在讲SET其他功能使用set /?查看SET的帮助我们发现SET除了我上面讲的SET [variable=[string]]SET /P variable=[promptString]这两种语法外,还有如下几种语法:SET /A expression环境变量替换已如下增强:%PATH:str1=str2%%PATH:~10,5%%PATH:~-10%%PATH:~0,-2%这机种语法有什么用处呢?下面来一个个讲解!二、用set命令进行简单计算语法:SET /A expression/A 命令行开关指定等号右边的字符串为被评估的数字表达式。
该表达式评估器很简单并以递减的优先权顺序支持下列操作:() -分组! ~ - -一元运算符* / % -算数运算符+ - -算数运算符<<>> -二进制逻辑移位& -二进制按位“与”^ -二进制按位“异”| -二进制按位“或”= *= /= %= += -= -算数赋值&= ^= |= <<= >>= -二进制运算赋值, -表达式分隔符如果SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值。
除十六进制有0x 前缀,八进制有0 前缀的,数字值为十进位数字。
因此,0x12 与18 和022相同。
请注意八进制公式可能很容易搞混:08 和09 是无效的数字,因为8 和9 不是有效的八进制位数。
上面这些是系统帮助里的内容,看着是不是有点晕,没关系我来简单解释一下:set的/A参数就是让SET可以支持数学符号进行加减等一些数学运算!注意:一般的运算常为十进制运算,如果数字字符串最左边为0,将被认为是八进制,从而出错。
比如,0812之类的数字不能参与十进制运算,转换方法为:10812-10000例:set aa=0812set /a aa=1%aa%-10000echo %aa%结果为:812例:@echo offset /p input=请输入计算表达式:set /a var=%input%echo 计算结果:%input%=%var%pause上面的例子是龙卷风设计的,很好用哟,请看下面几个运算过程:注意:DOS计算只能进行整数运算,精确到整数请输入计算表达式:1+9+20+30-10计算结果:1+9+20+30-10=50请按任意键继续. . .请输入计算表达式:10/3 #除法只能精确到整数计算结果:10/3=3请按任意键继续. . .请输入计算表达式:-100+62 #负数计算结果:-100+62=-38请按任意键继续. . .请输入计算表达式:100%3 #求余数计算结果:100%3=1请按任意键继续. . .注意:以上的求余数运算符%在批处理程序中必须写成%%请输入计算表达式:(25+75)*2/(15+5) #括号计算结果:(25+75)*2/(15+5)=10请按任意键继续. . .请输入计算表达式:1234567890*9876543210 #范围无效数字。