bat 语法点滴 批处理 Set 命令详解 让你理解set命令
- 格式:doc
- 大小:57.00 KB
- 文档页数:11
bat批处理命令及解释⼀、批处理概念批处理⽂件:包含DOS命令的可编辑可执⾏⽂件批处理:可以对某⼀对象批量操作的⽂件⼆、批处理命令简介命令1~101 echo 和 @回显命令@ #关闭单⾏回显echo off #从下⼀⾏开始关闭回显@echo off #从本⾏开始关闭回显。
⼀般批处理第⼀⾏都是这个echo on #从下⼀⾏开始打开回显echo #显⽰当前是 echo off 状态还是 echo on 状态echo. #输出⼀个”回车换⾏”,空⽩⾏#(同echo, echo; echo+ echo[ echo] echo/ echo)2 errorlevelecho %errorlevel%每个命令运⾏结束,可以⽤这个命令⾏格式查看返回码默认值为0,⼀般命令执⾏出错会设 errorlevel 为13 dir显⽰⽂件夹内容dir #显⽰当前⽬录中的⽂件和⼦⽬录dir /a #显⽰当前⽬录中的⽂件和⼦⽬录,包括隐藏⽂件和系统⽂件dir c: /a:d #显⽰ C 盘当前⽬录中的⽬录dir c: /a:-d #显⽰ C 盘根⽬录中的⽂件dir c: /b/p #/b只显⽰⽂件名,/p分页显⽰dir *.exe /s #显⽰当前⽬录和⼦⽬录⾥所有的.exe⽂件4 cd切换⽬录cd #进⼊根⽬录cd #显⽰当前⽬录cd /d d:sdk #可以同时更改盘符和⽬录5 md创建⽬录md d:abc #如果 d:a 不存在,将会⾃动创建中级⽬录#如果命令扩展名被停⽤,则需要键⼊ mkdir abc6 rd删除⽬录rd abc #删除当前⽬录⾥的 abc ⼦⽬录,要求为空⽬录rd /s/q d:temp #删除 d:temp ⽂件夹及其⼦⽂件夹和⽂件,/q安静模式7 del删除⽂件del d:test.txt #删除指定⽂件,不能是隐藏、系统、只读⽂件del /q/a/f d:temp*.*删除 d:temp ⽂件夹⾥⾯的所有⽂件,包括隐藏、只读、系统⽂件,不包括⼦⽬录del /q/a/f/s d:temp*.*删除 d:temp 及⼦⽂件夹⾥⾯的所有⽂件,包括隐藏、只读、系统⽂件,不包括⼦⽬录8 ren重命名命令ren d:temp tmp #⽀持对⽂件夹的重命名9 cls清屏10 type显⽰⽂件内容type c:boot.ini #显⽰指定⽂件的内容,程序⽂件⼀般会显⽰乱码type *.txt #显⽰当前⽬录⾥所有.txt⽂件的内容命令11~2011 copy拷贝⽂件copy c:test.txt d:test.bak复制 c:test.txt ⽂件到 d: ,并重命名为 test.bak从屏幕上等待输⼊,按 Ctrl+Z 结束输⼊,输⼊内容存为test.txt⽂件con代表屏幕,prn代表打印机,nul代表空设备copy 1.txt + 2.txt 3.txt合并 1.txt 和 2.txt 的内容,保存为 3.txt ⽂件如果不指定 3.txt ,则保存到 1.txtcopy test.txt +复制⽂件到⾃⼰,实际上是修改了⽂件⽇期12 title设置cmd窗⼝的标题title 新标题 #可以看到cmd窗⼝的标题栏变了13 ver显⽰系统版本14 label 和 vol设置卷标vol #显⽰卷标label #显⽰卷标,同时提⽰输⼊新卷标label c:system #设置C盘的卷标为 system15 pause暂停命令 //常⽤于使命令⾏窗⼝暂停,不⾄于打开bat⽂件后⽴即结束16 rem 和 ::注释命令注释⾏不执⾏操作17 date 和 time⽇期和时间date #显⽰当前⽇期,并提⽰输⼊新⽇期,按"回车"略过输⼊date/t #只显⽰当前⽇期,不提⽰输⼊新⽇期time #显⽰当前时间,并提⽰输⼊新时间,按"回车"略过输⼊time/t #只显⽰当前时间,不提⽰输⼊新时间18 goto 和 :跳转命令:label #⾏⾸为:表⽰该⾏是标签⾏,标签⾏不执⾏操作goto label #跳转到指定的标签那⼀⾏19 find (外部命令)查找命令find "abc" c:test.txt在 c:test.txt ⽂件⾥查找含 abc 字符串的⾏如果找不到,将设 errorlevel 返回码为1find /i “abc” c:test.txt查找含 abc 的⾏,忽略⼤⼩写find /c "abc" c:test.txt显⽰含 abc 的⾏的⾏数20 more (外部命令)逐屏显⽰more c:test.txt #逐屏显⽰ c:test.txt 的⽂件内容命令21~3021 tree显⽰⽬录结构tree d: #显⽰D盘的⽂件⽬录结构22 &顺序执⾏多条命令,⽽不管命令是否执⾏成功23 &&顺序执⾏多条命令,当碰到执⾏出错的命令后将不执⾏后⾯的命令find "ok" c:test.txt && echo 成功如果找到了"ok"字样,就显⽰"成功",找不到就不显⽰24 ||顺序执⾏多条命令,当碰到执⾏正确的命令后将不执⾏后⾯的命令find "ok" c:test.txt || echo 不成功如果找不到"ok"字样,就显⽰"不成功",找到了就不显⽰25 |管道命令dir *.* /s/a | find /c ".exe"管道命令表⽰先执⾏ dir 命令,对其输出的结果执⾏后⾯的 find 命令该命令⾏结果:输出当前⽂件夹及所有⼦⽂件夹⾥的.exe⽂件的个数type c:test.txt|more这个和 more c:test.txt 的效果是⼀样的26 > 和 >>> 清除⽂件中原有的内容后再写⼊>> 追加内容到⽂件末尾,⽽不会清除原有的内容主要将本来显⽰在屏幕上的内容输出到指定⽂件中指定⽂件如果不存在,则⾃动⽣成该⽂件type c:test.txt >prn屏幕上不显⽰⽂件内容,转向输出到打印机echo hello world>con在屏幕上显⽰hello world,实际上所有输出都是默认 >con 的copy c:test.txt f: >nul拷贝⽂件,并且不显⽰"⽂件复制成功"的提⽰信息,但如果f盘不存在,还是会显⽰出错信息copy c:test.txt f: >nul 2>nul不显⽰”⽂件复制成功”的提⽰信息,并且f盘不存在的话,也不显⽰错误提⽰信息echo ^^W ^> ^W>c:test.txt⽣成的⽂件内容为 ^W > W^ 和 > 是控制命令,要把它们输出到⽂件,必须在前⾯加个 ^ 符号27 <从⽂件中获得输⼊信息,⽽不是从屏幕上⼀般⽤于 date time label 等需要等待输⼊的命令@echo offecho 2005-05-01>temp.txtdate <temp.txtdel temp.txt这样就可以不等待输⼊直接修改当前⽇期28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*命令⾏传递给批处理的参数 //上⼀个命令的结果作为参数%0 批处理⽂件本⾝%1 第⼀个参数%9 第九个参数%* 从第⼀个参数开始的所有参数批参数(%n)的替代已被增强。
批处理Set命令详解让你理解set命令set,E⽂翻译过来就是“设置”的意思,相当于数学⾥的“令”。
如:set X=5,就是令X=5的意思。
语法形式:SET [variable=[string]]SET /P variable=[promptString]SET /A expression⼀、SET [variable=[string]]⽰例1:@echo offsetpause显⽰所有的变量的值⽰例2:@echo offset var=我是值echo %var%pause请看 set var=我是值 ,这就是BAT直接在批处理中设置变量的⽅法!set 是命令 var是变量名 =号右边的"我是值"是变量的值在批处理中我们要引⽤这个变量就把var变量名⽤两个%(百分号)扩起来,如%var%⼆、SET /P variable=[promptString]有时候我们需要提供⼀个交互界⾯,让⽤户⾃⼰输⼊变量的值,然后我们在来根据这个值来做相应操作,现在我就来说说这SET 的这种语法,只需要加⼀个"/P"参数就可以了!实例1:@echo offset /p var=请输⼊你的名字:echo 您的名字是:%var%pauseset /p 是命令语法 var是变量名 =号右边的"请输⼊变量的值: ",这个是提⽰语,不是变量的值了!运⾏后,我们在提⽰语后⾯直接输⼊robin,就会显⽰⼀⾏您” 您的名字是:robin”三、SET /A expression/A 命令⾏开关指定等号右边的字符串为被评估的数字表达式。
该表达式解析很简单并以递减的优先权顺序⽀持下列操作:() - 分组! ~ - - ⼀元运算符* / % - 算数运算符+ - - 算数运算符<< >> - 逻辑移位& - 按位“与”^ - 按位“异”| - 按位“或”= *= /= %= += -= &= ^= |= <<= >>= - 赋值, - 表达式分隔符set的/A参数就是让SET可以⽀持数学符号进⾏加减等⼀些数学运算!现在开始举例⼦介绍这些数学符号的⽤法:看例⼦这⾥的例⼦请直接在CMD下拷贝命令运⾏,不需要保存为BAT!set /a var=1 + 1set /a 语法, var变量名 1 + 1 数学式⼦拷贝运⾏后会直接显⽰⼀个2,或者运⾏完后我们输⼊echo %var%,也是⼆,这就是&nbs p ;。
bat文件set用法
在批处理文件(.bat)中,set命令用于设置或显示环境变量。
1. 设置环境变量:
使用set命令可以设置一个新的环境变量或者修改已有的环
境变量的值。
例如:
```
set 变量名=值
```
例如设置一个名为MYVAR的环境变量,值为Hello World: ```
set MYVAR=Hello World
```
2. 显示环境变量:
使用set命令可以显示当前所有的环境变量以及它们的值。
例如:
```
set
```
这将显示所有的环境变量和它们的值。
3. 删除环境变量:
使用set命令可以删除一个环境变量。
例如:
```
set 变量名=
```
例如删除一个名为MYVAR的环境变量:
```
set MYVAR=
```
注意:
- 环境变量的名称是区分大小写的。
- 在脚本中的set命令将会在该脚本执行期间设置和修改环境变量。
如果您希望将环境变量设置为持久变量,以便其他脚本和应用程序也可以使用它,您需要在系统设置中设置该变量。
更多关于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批处理命令大全.txt21春暖花会开!如果你曾经历过冬天,那么你就会有春色!如果你有着信念,那么春天一定会遥远;如果你正在付出,那么总有一天你会拥有花开满圆。
.bat 批处理命令关键词:批处理 ?? ????????????????????????????????????????一.简单批处理内部命令简介??1.Echo 命令??打开回显或关闭请求回显功能,或显示消息。
如果没有任何参数,echo 命令将显示当前回显设置。
??? 语法??echo [{on│off}] [message]??Sample:@echo off / echo hello world??在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。
??2.@ 命令??表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
??Sample:@echo off??@echo Now initializing the program,please wait a minite...??@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。
)??3.Goto 命令??指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
??语法:goto label (label是参数,指定所要转向的批处理程序中的行。
)?? Sample:??if {%1}=={} goto noparms??if {%2}=={} goto noparms(如果这里的if、%1、%2就是表示变量。
)??@Rem check parameters if null show usage??:noparms??echo Usage: monitor.bat ServerIP PortNumber??goto end??? 标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用 goto 所无法识别的标号, 即在 :后紧跟一个非字母数字的一个特殊符号.goto命令就是根据这个:来寻找下一步跳到到那里。
BAT命令全解批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。
这些命令统称批处理命令,下面我就来给大家介绍一下批处理的命令。
1、 REMREM 是个注释命令一般是用来给程序加上注解的,该命令后的内容在程序执行的时候将不会被显示和执行。
例:REM 你现在看到的就是注解,这一句将不会被执行。
在以后的例子中解释的内容都REM 会放在REM后面。
请大家注意。
2、 ECHOECHO 是一个回显命令主要参数有OFF和 ON,一般用ECHO message来显示一个特定的消息。
例:Echo offRem 以上代表关闭回显即不显示所执行的命令Echo 这个就是消息。
Rem 以上代表显示“这就是消息”这列字符执行结果:C:\>ECHO.BAT这个就是消息。
3、 GOTOGOTO 即为跳转的意思。
在批处理中允许以“:XXX”来构建一个标号然后用GOTO :标号直接来执行标号后的命令。
例:LABELREM 上面就是名为LABEL的标号。
DIR C:\DIR D:\GOTO LABELREM 以上程序跳转标号LABEL处继续执行。
4、CALLCALL 命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后再继续执行原来的批处理。
例:批处理2.BAT内容如下:ECHO 这就是2的内容批处理1.BAT内容如下:ECHO 这是1的内容CALL 2.BATECHO 1和2的内容全部显示完成执行结果如下:C:\>1.BAT这是1的内容这就是2的内容1和2的内容全部显示完成5、PAUSEPAUSE 停止系统命令的执行并显示下面的内容。
例:C:\> PAUSE请按任意键继续 . . .6、 IFIF 条件判断语句,语法格式如下:IF [NOT] ERRORLEVEL number commandIF [NOT] string1==string2 commandIF [NOT] EXIST filename command说明:[NOT] 将返回的结果取反值即“如果没有”的意思。
cmd中set的用法摘要:一、set 命令概述1.set 命令简介2.set 命令的作用二、set 命令的基本用法1.设置环境变量2.显示环境变量3.删除环境变量三、set 命令的高级用法1.设置命令别名2.设置Path 变量3.其他高级用法四、set 命令的注意事项1.变量名和值的要求2.变量作用域3.命令冲突正文:一、set 命令概述set 命令是Windows 命令提示符(cmd)中一个非常实用的命令,主要用于设置和显示环境变量,以及为其他命令设置别名。
通过set 命令,用户可以灵活地控制命令提示符的运行环境,提高工作效率。
二、set 命令的基本用法1.设置环境变量要设置环境变量,可以使用如下格式:```set 变量名=变量值```例如,要将名称为“my_var”的环境变量设置为“my_value”,可以输入:```set my_var=my_value```2.显示环境变量要显示当前所有的环境变量,可以输入:```set```这将显示所有已设置的环境变量及其值。
3.删除环境变量要删除一个环境变量,可以使用如下格式:```set 变量名=```例如,要删除名称为“my_var”的环境变量,可以输入:```set my_var=```三、set 命令的高级用法1.设置命令别名要为某个命令设置别名,可以使用如下格式:```set 别名=命令```例如,要将“dir”命令设置为“my_dir”,可以输入:```set my_dir=dir```然后,在需要使用“dir”命令时,只需输入“my_dir”即可。
2.设置Path 变量要设置Path 变量,以便在执行命令时自动添加相应的路径,可以使用如下格式:```set PATH=%PATH%;新路径```例如,要将“C:my_folder”路径添加到Path 变量中,可以输入:```set PATH=%PATH%;C:my_folder```3.其他高级用法set 命令还可以用于其他高级操作,如设置覆盖文件扩展名、设置批处理中的变量等。
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.txtcall c:\ucdos\ucdos.bat调用ucdospause 暂停,等待按键继续rem 准备运行wps 注释:准备运行wpscd ucdos进入ucdos目录wps 运行wps批处理文件的参数批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符“%”。
%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。
变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。
例2:C:根目录下有一批处理文件名为f.bat,内容为:@echo offformat %1如果执行C:\>f a:那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:例3:C:根目录下一批处理文件名为t.bat,内容为:type %1type %2那么运行C:\>t a.txt b.txt%1 : 表示a.txt%2 : 表示b.txt于是上面的命令将顺序地显示a.txt和b.txt文件的内容。
目录第一章批处理基础第一节常用批处理内部命令简介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、更正了所有的错别字,适当排版,增加条理性。
批处理BAT脚本中set命令的使⽤详解(批处理之家Batcher)⽬录⼀、使⽤ set 命令进⾏赋值1、等号两边不要有空格2、变量值包含特殊字符需⽤双引号3、避免使⽤系统环境变量同名的⾃定义变量4、语法可⾏但不推荐使⽤⼆、使⽤ set /p 命令读取输⼊三、使⽤ set /a 命令进⾏数学运算(1)四、使⽤ set /a 命令进⾏数学运算(2)五、使⽤ set 命令进⾏字符串截取六、使⽤ set 命令进⾏字符串替换七、set命令知识点(1)把命令结果赋值给变量⼋、set命令知识点(2)显⽰以某字符开头的变量⼀、使⽤ set 命令进⾏赋值SET [variable=[string]]1、等号两边不要有空格正确写法C:\>set str=ScriptHomeC:\>echo %str%ScriptHome错误写法C:\>set str = ScriptHomeC:\>echo %str%%str%2、变量值包含特殊字符需⽤双引号正确写法C:\>set "str=Bat&Home"C:\>echo "%str%""Bat&Home"错误写法C:\>set str=Bat&Home'Home' 不是内部或外部命令,也不是可运⾏的程序或批处理⽂件。
C:\>echo "%str%""Bat"变量值设置为空可以清空变量值,实现变量初始化。
3、避免使⽤系统环境变量同名的⾃定义变量例如:path , date , errorlevel 等4、语法可⾏但不推荐使⽤使⽤连等把多个变量赋值成数字set /a x=y=100逗号分隔把多个变量赋值成数字set /a x=1,y=2上⾯是dos界⾯下的写法,下⾯是批处理中的写法,主意是变量⽰例1:显⽰所有的变量的值@echo offsetpause⽰例2:@echo offset var=我是值echo %var%pause请看 set var=我是值 ,这就是BAT直接在批处理中设置变量的⽅法!set 是命令 var是变量名 =号右边的"我是值"是变量的值在批处理中我们要引⽤这个变量就把var变量名⽤两个%(百分号)扩起来,如%var%⼆、使⽤ set /p 命令读取输⼊交互获取⽤户输⼊@echo offset /p input=请输⼊⼀个字符串:echo,%input%pause读取⽂件的第⼀⾏内容C:\>echo BatHome>1.txtC:\>set /p input=<"1.txt"C:\>echo %input%BatHome输出字符串之后不产⽣换⾏@echo offfor %%i in (bat home) do (echo,%%i)pause输出bathome请按任意键继续. . .@echo offfor %%i in (bat home) do (set /p =%%i<nul)pause输出bathome请按任意键继续. . .批处理光标回退(⾮cls清屏)动画效果演⽰@echo offecho set /p =光标回退(⾮cls清屏)动画效果演⽰:<nulfor /l %%i in (1,1,10) do (set /p =%%i<nulset /p =<nulping -n 2 127.1 >nul)echo,pause三、使⽤ set /a 命令进⾏数学运算(1)等号右侧的变量可以省略百分号C:\>set x=1C:\>set y=2C:\>set /a n=%x%+%y%3C:\>set x=1C:\>set y=2C:\>set /a n=x+y3⼋进制和⼗六进制转换成⼗进制很简单C:\>set /a 01210C:\>set /a 0xA10BAT⽂件⾥⾯进⾏“取余”操作的时候需要使⽤两个百分号@echo offset /a n=3%%2echo %n%pause逻辑运算的特殊字符需要使⽤双引号@echo offset /a "m=1<<10"set /a n=1"<<"10echo %m% %n%pause四、使⽤ set /a 命令进⾏数学运算(2)不⽀持直接计算超⼤数(例如磁盘空间的计算)C:\>set /a n=2147483646+12147483647C:\>set /a n=2147483647+1-2147483648C:\>set /a n=2147483648+1⽆效数字。
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。
SQL*PLUS维护系统变量,也称SET变量,利用它可为SQL*PLUS交互建立一个特殊的环境,如:设置NUMBER数据的显示宽度;设置每页的行数;设置列的宽度等。
可用SET命令改变这些系统变量,也可用SHOW命令列出它们.使用set命令的语法如下:SET 系统变量值其中系统变量及其可选值如下:ARRAY[SIZE] {20(默认值)|n}AUTO[COMMIT] {OFF(默认值)|ON|IMM[EDIATE]}BLO[CKTERMINATOR] {.(默认值)|C}CMDS[EP] {;|C|OFF(默认值)|ON}COM[PATIBILITY] {V5|V6|V7|NATIVE(默认值)}CON[CAT] {.(默认值)|C|OFF|ON(默认值)}COPYC[OMMIT] {0(默认值)|n}CRT crtDEF[INE] {&|C|OFF|ON(默认值)}ECHO {OFF|ON}EMBEDDED {OFF(默认值)|ON}ESC[APE] {\(默认值)|C|OFF(默认值)|ON}FEED[BACK] {6(默认值)|n|OFF|ON}FLU[SH] {OFF|ON(默认值)}HEA[DING] {OFF|ON(默认值)}HEADS[EP] {|(默认值)|C|OFF|ON(默认值)}LIN[ESIZE] {80(默认值)|n}LONG {80(默认值)|n}LONGC[HUNKSIZE] {80(默认值)|n}MAXD[ATA] nNEWP[AGE] {1(默认值)|n}NULL textNUMF[ORMAT] 格式NUM[WIDTH] {10(默认值)|n}PAGES[IZE] {14(默认值)|n}PAU[SE] {OFF(默认值)|ON|text}RECSEP {WR[APPED](默认值)|EA[CH]|OFF}RECSEPCHAR { |C}SCAN {OFF|ON(默认值)}SERVEROUT[PUT] {OFF|ON} [SIZE n]SHOW[MODE] {OFF(默认值)|ON}SPA[CE] {1(默认值)|n}SQLC[ASE] {MIX[ED](默认值)|LO[WER]|UP[PER]}SQLCO[NTINUE] {>;(默认值)|文本}SQLN[UMBER] {OFF|ON(默认值)}SQLPER[FIX] {#(默认值)|C}SQLP[ROMPT] {SQL>;(默认值)|文本}SQLT[ERMINATOR] {;(默认值)|C|OFF|ON(默认值)}SUF[FIX] {SQL(默认值)|文本}TAB {OFF|ON(默认值)}TERM[OUT] {OFF|ON(默认值)}TI[ME] {OFF(默认值)|ON}TIMI[NG] {OFF(默认值)|ON}TRIM[OUT] {OFF|ON(默认值)}UND[ERLINE] {-(默认值)|C|OFF|ON(默认值)}VER[IFY] {OFF|ON(默认值)}WRA[P] {OFF|ON(默认值)}系统变量说明:ARRAY[SIZE] {20(默认值)|n} 置一批的行数,是SQL*PLUS一次从数据库获取的行数,有效值为1至5000. 大的值可提高查询和子查询的有效性,可获取许多行,但也需要更多的内存.当超过1000时,其效果不大.AUTO[COMMIT] {OFF(默认值)|ON|IMM[EDIATE]} 控制ORACLE对数据库的修改的提交. 置ON时,在ORACLE 执行每个SQL命令或PL/SQL块后对数据库提交修改;置OFF时则制止自动提交,需要手工地提交修改,例如用SQL的COMMIT命令. IMMEDIATE功能同ON.BLO[CKTERMINATOR] {.(默认值)|C} 置非字母数字字符,用于结束PL/SQL块.要执行块时,必须发出RUN 命令或/命令.CMDS[EP] {;|C|OFF(默认值)|ON} 置非字母数字字符,用于分隔在一行中输入的多个SQL/PLUS命令.ON 或OFF控制在一行中是否能输入多个命令. ON时将自动地将命令分隔符设为分号(;).其中C表示所置字符.COM[PATIBILITY] {V5|V6|V7|NATIVE(默认值)} 指定当前所链接的ORACLE版本.如果当前ORACLE的版本为5,则置COMPATIBILITY为V5; 为版本6时置成V6; 为版本7时置成V7. 如果希望由数据库决定该设置,在置成NATIVE.CON[CAT] {.(默认值)|C|OFF|ON(默认值)}设置结束一替换变量引用的字符.在中止替换变量引用字符之后可跟所有字符,作为体会组成部分,否则SQL*PLUS将解释为替换变量名的一部分.当CONCAT开关为ON 时,SQL*PLUS可重置CONCAT的值为点(.).COPYC[OMMIT] {0(默认值)|n} 控制COPY命令提交对数据库修改的批数.每次拷贝n批后,将提交到目标数据库.有效值为0到5000. 可用变量ARRAYSIZE设置一批的大小.如果置COPYCOMMIT为0,则仅在COPY操作结束时执行一次提交.CRT crt 改变SQL*PLUS RUNFORM命令使用的缺省CRT文件.如果置CRT不包含什么,则crt仅包含''''.如果在一个Form的系统调用期间,要使用NEW.CRT(缺省CRT是OLD.CRT),可按下列形式调用Form:SQL>;RUNFORM -C NEW form名或者SQL>;SET CRT NEWSQL>;RUNFORM form名第二中方法存储CRT选择,以致在下次运行RUNFORM命令(是在同一次SQL*PLUS交互中)时,不需要指定.DEF[INE] {&|C|OFF|ON(默认值)} 设置在替换变量时所使用的字符.ON或OFF控制SQL*PLUS是否扫描替换变量的命令及用他们的值代替. DEFINE的ON或OFF的设置控制SCAN变量的设置.ECHO {OFF|ON} 控制START命令是否列出命令文件中的每一命令.为ON时,列出命令;为OFF时,制止列清单.EMBEDDED {OFF(默认值)|ON} 控制每一报表在一页中开始的地方. 为OFF时,迫使每一报表是在新页的顶部开始;为ON时,运行一报表在一页的任何位置开始.ESC[APE] {\(默认值)|C|OFF(默认值)|ON} 定义作为Escape字符的字符.为OFF时,使Escape字符不起作用.为ON时,使Escape字符起作用.FEED[BACK] {6(默认值)|n|OFF|ON} 显示由查询返回的记录数.ON和OFF置显示为开或关.置FEEDBACK 为ON时,等价于置n为1. 如果置FEEDBACK为0,等价于将它置成OFF.FLU[SH] {OFF|ON(默认值)} 控制输出送至用户的显示设备.为OFF时,运行操作系统做缓冲区输出;为ON 时,不允许缓冲. 仅当非交互方式运行命令文件时使用OFF,这样可减少程序I/O总是,从而改进性能.HEA[DING] {OFF|ON(默认值)} 控制报表中列标题的打印.为ON时,在报表中打印列标题;为OFF时禁止打印列标题.HEADS[EP] {|(默认值)|C|OFF|ON(默认值)} 定义标题分隔字符.可在COLUMN命令中使用标题分隔符,将列标题分成多行.ON和OFF将标题分隔置成开或关.当标题分隔为关(OFF)时,SQL*PLUS打印标题分隔符像任何字符一样.LIN[ESIZE] {80(默认值)|n} 置SQL*PLUS在一行中显示的字符总数,它还控制在TTITLE和BTITLE中对准中心的文本和右对齐文本. 可定义LINESIZE为1至最大值,其最大值依赖于操作系统.LONG {80(默认值)|n} 为显示和拷贝LONG类型值的最大宽度的设置. 对于ORACLE7, n的最大值为2G字节;对于版本6,最大值为32767.LONGC[HUNKSIZE] {80(默认值)|n} 为SQL*PLUS检索LONG类型值的增量大小.由于内存的限制,可按增量检索,该变量仅应用于ORACLE7.MAXD[ATA] n 置SQL*PLUS可处理的最大行宽字符数,其缺省值和最大值在不同操作系统中是可变的.NEWP[AGE] {1(默认值)|n} 置每一页的头和顶部标题之间要打印的空行数.如果为0, 在页之间送一换号符,并在许多终端上清屏.NULL text 设置表示空值(null)的文本,如果NULL没有文本,则显示空格(缺省时). 使用COLUMN命令中的NULL子句可控制NULL变量对该列的设置.NUMF[ORMAT] 格式设置显示数值的缺省格式,该格式是数值格式.NUM[WIDTH] {10(默认值)|n} 对显示数值设置缺省宽度.PAGES[IZE] {14(默认值)|n} 置从顶部标题至页结束之间的行数.在11英寸长的纸上打印报表,其值为54,上下各留一英寸(NEWPAGE值为6).PAU[SE] {OFF(默认值)|ON|text} 在显示报表时,控制终端滚动.在每一暂停时,必须按RETURN键.ON将引起SQL*PLUS在每一报表输出页开始时暂停.所指定的文本是每一次SQL*PLUS暂停时显示的文本.如果要键入多个词,必须用单引号将文本括起来.RECSEP {WR[APPED](默认值)|EA[CH]|OFF}RECSEPCHAR { |C} 指定显示或打印记录分行符的条件.一个记录分行符,是由RECSEPCHAR指定的字符组成的单行.空格为RECSEPCHAR的默认字符.RECSEP告诉SQL*PLUS在哪儿做记录分隔.例如将RECSEP置成WRAPPED,在每一缠绕行之后,打印记录分行符.如果将RECSEP置成EACH,SQL*PLUS在每一行后打印一记录分行符.如果将RECSEP置成OFF, SQL*PLUS 不打印分行符.SCAN {OFF|ON(默认值)} 控制对存在的替换变量和值的扫描.OFF禁止替换变量和值的处理; ON则允许正常处理.SERVEROUT[PUT] {OFF|ON} [SIZE n] 控制在SQL*PLUS中的存储过程是否显示输出.OFF时为禁止; ON时则显示输出. SIZE设置缓冲输出的字节数,缺省值为2000, n不能小于2000或大于一百万.SHOW[MODE] {OFF(默认值)|ON} 控制SQL*PLUS在执行SET命令时是否列出其新老值old或new的设置.SPA[CE] {1(默认值)|n} 设置输出列之间空格的数目,其最大值为10.SQLC[ASE] {MIX[ED](默认值)|LO[WER]|UP[PER]} 先于执行之前,将SQL命令和PL/SQL块的大小写进行转换. SQL*PLUS将转换命令中的全部文本,包括带引号的直接量和标示符.SQLCASE不改变SQL缓冲区本身.SQLCO[NTINUE] {>;(默认值)|文本} 在一附加行上继续一SQL*PLUS命令时,SQL*PLUS以该设置的字符序列进行提示.SQLN[UMBER] {OFF|ON(默认值)} 为SQL命令和PL/SQL块的第二行和后继行设置提示.为ON时,提示行号;为OFF时,提示设置为SQLPROMPT的值.SQLPER[FIX] {#(默认值)|C} 设置SQL*PLUS前缀字符.在键入一SQL命令或PL/SQL块时,可在单独行上键入一SQL*PLUS命令,由SQL*PLUS的前缀字符做前缀. SQL*PLUS直接执行该命令,不影响SQL命令或PL/SQL块.前缀字符必须是非字母数字字符.SQLP[ROMPT] {SQL>;(默认值)|文本} 设置SQL*PLUS的命令提示符.SQLT[ERMINATOR] {;(默认值)|C|OFF|ON(默认值)} 设置用于结束和执行SQL命令的字符. OFF意味着SQL*PLUS不识别命令终止符,用键入空行来结束SQL命令. ON重设置终止符为默认的分号(;).SUF[FIX] {SQL(默认值)|文本} 设置缺省文件的后缀,SQL*PLUS在命令中使用,来引用命令文件. SUFFIX 不控制输出(spool)文件的扩展名.TAB {OFF|ON(默认值)} 决定SQL*PLUS在终端输出中如何格式化空白空间. 为OFF时,在输出中使用空格格式化空白空间;为ON时,用TAB字符. TAB的缺省值依赖于系统,用SHOW TAB命令可查看该缺省值.TERM[OUT] {OFF|ON(默认值)} 控制由文件执行命令所产生的输出的显示. OFF禁止显示,以致从一个命令文件假脱机输出,在屏幕上看不到输出. ON时显示输出. TERMOUT OFF 不影响交互地进行命令的输出.TI[ME] {OFF(默认值)|ON} 控制当前日期的显示. ON时,在每条命令提示前显示当前时间; OFF时禁止时间的显示.TIMI[NG] {OFF(默认值)|ON} 控制时间统计的显示. ON时,显示每一个运行的SQL命令或PL/SQL块的时间统计; OFF时,禁止每一个命令的时间统计.TRIM[OUT] {OFF|ON(默认值)} 决定SQL*PLUS在每一显示行的末端是否允许带空格. ON时将每行尾部的空格去了,特别当从慢速的通信设备存取SQL*PLUS时可改进性能; OFF时允许SQL*PLUS显示尾部的空格.TRIMOUT ON 不影响假脱机输出. 设置TAB ON时,SQL*PLUS忽略TRIMOUT ON.UND[ERLINE] {-(默认值)|C|OFF|ON(默认值)} 设置用在SQL*PLUS报表中下划线列标题的字符. ON或OFF将下划线置成开或关.VER[IFY] {OFF|ON(默认值)} 控制SQL*PLUS用值替换前、后是否列出命令的文本. ON时显示文本;OFF 时禁止列清单.WRA[P] {OFF|ON(默认值)} 控制SQL*PLUS是否截断数据项的显示. OFF时截断数据项;ON时允许数据项缠绕到下一行. 在COLUMN命令中使用WRAPPED和TRUNCATED子句可控制对指定列的WRAP的设置.set colsep' ';//-域输出分隔符set echo off;//显示start启动的脚本中的每个sql命令,缺省为onset echo on //设置运行命令是是否显示语句set feedback on; //设置显示“已选择XX行”set feedback off;//回显本次sql命令处理的记录条数,缺省为onset heading off;//输出域标题,缺省为onset pagesize 0;//输出每页行数,缺省为24,为了避免分页,可设定为0。
set [[/a [expression]] [/p [variable=]] string]参数/a将string 设置成可求值的数字表达式。
/p将variable 的值设置成输入行。
variable指定需要设置或修改的变量。
string指定要与指定变量关联的字符串。
/?在命令提示符显示帮助。
注释使用“恢复控制台”中的setset 命令具有不同的参数,可从“恢复控制台”中获得。
使用特殊字符字符< > | & ^ 是特殊命令外壳字符,在字符串中使用时必须位于escape 字符(^) 之前或用引号引起来(即,"StringContaining&Symbol")。
如果要使用引号将含有特殊字符的字符串引起来,则该引号将被设置成环境变量值的一部分。
使用环境变量使用环境变量可控制某些批处理文件和程序的操作,并可控制Windows XP 和MS-DOS 子系统显示和工作的方式。
Autoexec.nt 文件中经常使用set 命令设置环境变量。
显示当前的环境设置当只键入set 命令时,将显示当前的环境设置。
这些设置通常包含用来帮助查找磁盘上程序的COMSPEC 和PATH 环境变量。
Windows XP 使用的两个其它环境变量是PROMPT 和DIRCMD。
使用参数当指定变量和字符串的值时,指定的变量值将被添加到该环境,而且该字符串与该变量关联。
如果环境中已经存在该变量,新的字符串值将替代旧的字符串值。
如果只为set 命令指定一个变量和一个等号(没有字符串),则与该变量关联的字符串值将被清除(就象变量根本不存在一样)。
使用/a下表按优先性从高到低的顺序列出了支持/a 的运算符。
运算符执行的操作< > 分组* / % + - 算法<< >> 逻辑移位& 按位“和”运算^ 按位“异或”运算| 按位“或”运算= *= /= %= += -= &= ^= |= <<= >>= 分配, 表达式分隔符如果使用逻辑(&& ||) 或模(%) 运算符,请使用引号将表达式字符串引起来。
bat批处理命令大全一.简单批处理内部命令简介1.Echo 命令打开回显或关闭请求回显功能,或显示消息。
如果没有任何参数,echo 命令将显示当前回显设置。
语法echo [{on│off}] [message]Sample:@echo off / echo hello world在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。
2.@ 命令表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
Sample:@echo off@echo Now initializing the program,please wait a minite...@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y 是一样的。
)3.Goto 命令指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。
)Sample:if {%1}=={} goto noparmsif {%2}=={} 标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用 goto 所无法识别的标号, 即在 :后紧跟一个非字母数字的一个特殊符号.goto命令就是根据这个:来寻找下一步跳到到那里。
最好有一些说明这样你别人看起来才会理解你的意图啊。
4.Rem 命令注释命令,起一个注释的作用,便于别人阅读和你自己日后修改。
Rem MessageSample:@Rem Here is the description.5.Pause 命令运行 Pause 命令时,将显示下面的消息:Press any key to continue . . .Sample:@echo off:begincopy a:*.* d:\backecho Please put a new disk into driver Apausegoto begin在这个例子中,驱动器A 中磁盘上的所有文件均复制到d:\back 中。
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文翻译过来就是“设置”的意思,相当于数学里的“令”。
如:set X=5,就是令X=5的意思。
set的通常用法示例:1、set 显示环境变量:如:在命令行下输入:set 会显示当前所有的系统环境变量set c 会显示所有的以c开头或C开头的变量(也即不区分大小写);set com 会显示所有的以com开头或COM开头的变量(不区分大小写);2、set 设置环境变量,用法示例:set 表达式,如:set str=ok就是将变量str的值设置成字符串“OK”注意:set str=ok>这个在批处理运行过程中会出错,系统会提示:“命令语法不正确。
”原因是,因为变量str 中的值“ok>”的字符">"为一特殊字符,会被系统当成定向符处理,所以会运行出错,那如果确实要设置这样的变量str,值为 "ok>"怎么办呢?解决办法有二:将特殊字符转义,转义方法在该特殊字符前加一个“^”,如:set str=ok^> (这种方法比较少用,因为没有多少应用价值)常见的解决办法,在set后面将整个表达式用引号括起来,如:set "str=>"3、带参数 /a的set 数值计算set的/A参数就是让SET可以支持数学符号进行加减等一些数学运算! 支持的数学运算包含(优先权递减):() - 分组! ~ - - 一元运算符* / % - 算数运算符+ - - 算数运算符<< >> - 逻辑移位& - 按位“与”^ - 按位“异”| - 按位“或”= *= /= %= += -= - 赋值&= ^= |= <<= >>=, - 表达式分隔符用法示例:set /a num=2*10,这样变量num的值将变为:20复制代码代码如下:set /a var=2 - 1 结果是多少呢?如果你看不到结果就echo %var%.....set /a var=2 * 2 乘法运算set /a var=2 / 2 除法运算set /a var=(1+1) + (1+1) 结果等于4 看得懂吧!set /a a=1+1,b=2+1,c=3+1 运行后会显示一个4,但我们用echo %a% %b% %c%后看结果,会发现其他数学运算也有效果!,这就是"斗"号的作用!有时候我们需要直接在原变量进行加减操作就可以用这种语法set /a var+=1 这样的语法对应原始语法就是set /a var = %var% + 1都是一样的结果。
对于"逻辑或取余操作符",我们需要把他们用双引号引起来,看例子复制代码代码如下:set /a var= 1 "&" 1 这样结果就显示出来了,其他逻辑或取余操作符用法set /a var= 1 "+" 1 异运算set /a var= 1 "%" 1 取模运算set /a var= 2 "<<" 2 次方运算set /a var= 4 ">>" 2 这个不太记得数学里的叫法....这些符号也可以用&= ^= |= <<= >>= 这样的简单用法如set /a var"&=" 1 等于set /a var = %var% "&" 1 注意引号4、带参数 /p 的set 等待用户输入windows 2000 和windows 是没有choice这个命令,choice的等待用户输入功能就要通过set /p来实现演示如下:复制代码代码如下:@echo offset /p str=请输入你想输入的字符:echo 你输入的字符串为:%str%pause>nulset /p的特殊应用(set /p=<nul相当于输出字符并不带回车,利用这个性质,可以做出比较漂亮的动画),用法示例:复制代码代码如下:@echo offfor /l %%i in (1 1 70) do (set /p=O<nulfor /l %%a in (1 1 50) do ver>nul)pause>nul注:代码中用到了一句for /l %%a in (1 1 50) do ver>nul,它的目的是利用for循环运行某一命令来达到延时的目的。
5、利用set截取字符保存下面的代码为test.bat运行查看即可。
复制代码代码如下:@echo off&color 1f&rem num=15 nums=30mode con: cols=80 lines=35set "var=1234567890"set "num= "set "nums= "rem 第一屏舍弃cls&echo 第一屏舍弃echo\&echo %num% var=%var%&echo\for /l %%i in (1 1 3) do call :dan %%iecho\for /l %%i in (0 1 1) do call :yi %%iecho\for /l %%i in (0 1 2) do call :_yi %%iecho ~ 波浪号后面的数字:为正数表示舍弃变量的前位;echo , 逗号后面的数字为正数表示取变量的舍弃以后的前几位;echo , 逗号后面为负数表示舍弃变量的后几位echo\&echo\&pause&color 1erem 第二屏取cls&echo 第二屏取echo\&echo %num% var=%var%&echo\for /l %%i in (-1 -1 -3) do call :dan %%iecho\for /l %%i in (-4 -1 -6) do call :er %%iecho\call :_er -8echo ~ 波浪号后面直接跟负数表示取变量的后几位echo , 逗号后面的数字为正数表示取变量的舍弃以后的前几位;echo , 逗号后面为负数表示舍弃变量的后几位echo\&echo\&pause&color 1frem 第三屏替换删除cls&echo 第三屏替换删除set "var=abc:\123\ef:g\123\456"hij"789"klm\"echo\&echo %num%var=%var%echo\call :sanecho = 号左边为要替换掉的字符, 右边为需替换来的字符echo = 号左边要替换掉的字符前面加个*号,代表第一次出现的字符及其前面的所有字符echo\echo ========= 演示完毕 ========= 按任意键退出 ==========pause>nulexit:danset shu=%1if %shu% lss 0 (set aa=取&set ji=最后) else set aa=舍弃&set ji=前if "%shu:~0,1%"=="-" set shu=%shu:~1%set str1=%%var:~%1%%%num%set str2=%aa%var的%ji%%shu%位%nums%call set str3=%%var:~%1%%%num%call echo %%str1:~0,15%% %%str2:~0,30%% %%str3:~0,15%%goto :eof:yiset shu=%1if %shu% lss 0 (set aa=取&set ji=最后) else set aa=舍弃&set ji=前for /l %%i in (1 1 3) do (set str1=%%var:~%1,%%i%%%num%set str2=%aa%var的%ji%%shu%位之后取%%i位%nums%call set str3=%%var:~%1,%%i%%%num%call echo %%str1:~0,15%% %%str2:~0,26%% %%str3:~0,15%%if %%i==3 echo\)goto :eof:_yifor /l %%i in (-1 -1 -3) do (set str1=%%var:~%1,%%i%%%num%set str2=舍弃var的前%1位和%%i位%nums%call set str3=%%var:~%1,%%i%%%num%call echo %%str1:~0,15%% %%str2:~0,28%% %%str3:~0,15%%if %%i==-3 echo\)goto :eof:erset sss=%1set sss=%sss:~1%for /l %%i in (1 1 3) do (set str1=%%var:~%1,%%i%%%num%set str2=从var的倒数%sss%位开始取%%i位%nums%call set str3=%%var:~%1,%%i%%%num%call echo %%str1:~0,15%% %%str2:~0,24%% %%str3:~0,15%%if %%i==3 echo\)goto :eof:_erset sss=%1set sss=%sss:~1%for /l %%i in (-1 -1 -3) do (set str1=%%var:~%1,%%i%%%num%set str2=从var的倒数%sss%位开始并舍弃最后%%i位%nums% call set str3=%%var:~%1,%%i%%%num%call echo %%str1:~0,15%% %%str2:~0,20%% %%str3:~0,15%% if %%i==-3 echo\)goto :eof:sanset str1=%%var:"=%%%num%set str2=删除var中的所有^"号%num%set str3=%var:"=%%nums%call echo %%str1:~0,13%% %%str2:~0,23%% %%str3:~0,30%% set str1=%%var:\=%%%num%set str2=删除var中的所有\号%num%set str3=%var:\=%%nums%call echo %%str1:~0,13%% %%str2:~0,23%% %%str3:~0,30%% set str1=%%var::=%%%num%set str2=删除var中的所有:号%num%set str3=%var::=%%nums%call echo %%str1:~0,13%% %%str2:~0,23%% %%str3:~0,30%% echo\set str1=%%var:"=好%%%num%set str2=替换var中的所有^"号为好字%num%set str3=%var:"=好%%nums%call echo %%str1:~0,12%% %%str2:~0,20%% %%str3:~0,30%% set str1=%%var:\=好%%%num%set str2=替换var中的所有\号为好字%num%set str3=%var:\=好%%nums%call echo %%str1:~0,12%% %%str2:~0,20%% %%str3:~0,30%% set str1=%%var::=好%%%num%set str2=替换var中的所有:号为好字%num%set str3=%var::=好%%nums%call echo %%str1:~0,12%% %%str2:~0,20%% %%str3:~0,30%% echo\set str1=%%var:*"=%%%num%set str3=%var:*"=%%nums%echo 删除var中的第一次出现的^"号及其前面的所有字符call echo %%str1:~0,15%% %%str3:~0,30%%echo.set str1=%%var:*\=%%%num%set str3=%var:*\=%%nums%echo 删除var中的第一次出现的\号及其前面的所有字符call echo %%str1:~0,15%% %%str3:~0,30%%echo.set str1=%%var:*:=%%%num%set str3=%var:*:=%%nums%echo 删除var中的第一次出现的:号及其前面的所有字符call echo %%str1:~0,15%% %%str3:~0,30%%echo\set str1=%%var:*"=ppp%%%num%set str3=%var:*"=ppp%%nums%echo 替换var中的第一次出现的^"号及其前面的所有字符为ppp call echo %%str1:~0,15%% %%str3:~0,30%%echo.set str1=%%var:*\=ppp%%%num%set str3=%var:*\=ppp%%nums%echo 替换var中的第一次出现的\号及其前面的所有字符为ppp call echo %%str1:~0,15%% %%str3:~0,30%%echo.set str1=%%var:*:=ppp%%%num%set str3=%var:*:=ppp%%nums%echo 替换var中的第一次出现的:号及其前面的所有字符为ppp call echo %%str1:~0,15%% %%str3:~0,30%%echo\goto :eof 批处理Set命令详解补充篇一、设置自定义变量复制代码代码如下:@echo offset var=我是值echo %var%pause二、设置自定义变量,并接受用户输入作为值复制代码代码如下:@echo off@echo offset /p var=请输入变量的值:if %var% == 1 echo 您输入了 1 ~_~pause三、SET /A expressionset的/A参数就是让SET可以支持数学符号进行加减等一些数学运算! 支持的数学运算包含(优先权递减):复制代码代码如下:() - 分组! ~ - - 一元运算符* / % - 算数运算符+ - - 算数运算符<< >> - 逻辑移位& - 按位“与”^ - 按位“异”| - 按位“或”= *= /= %= += -= - 赋值&= ^= |= <<= >>=, - 表达式分隔符Batch代码复制代码代码如下:set /a var=2 - 1 结果是多少呢?如果你看不到结果就echo %var%.....set /a var=2 * 2 乘法运算set /a var=2 / 2 除法运算set /a var=(1+1) + (1+1) 结果等于4 看得懂吧!set /a a=1+1,b=2+1,c=3+1 运行后会显示一个4,但我们用echo %a% %b% %c%后看结果,会发现其他数学运算也有效果!,这就是"斗"号的作用!有时候我们需要直接在原变量进行加减操作就可以用这种语法set /a var+=1 这样的语法对应原始语法就是set /a var = %var% + 1都是一样的结果。