常见bat命令(二)
6.Call 命令
语法: call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
参数: [Drive:][Path] FileName 指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。
调用另一个批处理程序,并且不终止父批处理程序。
如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令。
call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。
Sample:call="%cd%\test2.bat" haha kkk aaa (调用指定目录下的 test2.bat,且输入3个参数给他)
Sample:call test2.bat arg1 arg2 (调用同目录下的 test2.bat,且输入2个参数给他)
注:可以调用自身(死循环、递归)
7.start 命令
调用外部程序,所有的 DOS命令 和 命令行程序 都可以由 start命令 来调用。
入侵常用参数:
MIN 开始时窗口最小化
SEPARATE 在分开的空间内开始 16 位 Windows 程序
HIGH 在 HIGH 优先级类别开始应用程序
REALTIME 在 REALTIME 优先级类别开始应用程序
WAIT 启动应用程序并等候它结束
parameters 这些为传送到命令/程序的参数
Sample:start /MIN test2.bat arg1 arg2 (调用同目录下的 test2.bat,且输入2个参数给他,且本窗口最小化)
Sample:e:\"program files"\极品列车时刻表\jpskb.exe (文件路径名有空格时)
8.If 命令
if 表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:
1) IF
语法: if [not] "参数" == "字符串" 待执行的命令
参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
Sample: if "%1" == "a" format a:
Sample: if {%1} == {} goto noparms
2) if exist
语法: if [not] exist [路径\]文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
Sample: if exist config.sys edit config.sys (表示如果存在这文件,则编辑它,用很难看的系统编辑器)
Sample: if exist config.sys type config.sys (表示如果存在这文件,则显示它的内容)
3) if errorlevel number
语法: if [not] errorlevel <数字> 待执行的命令
如果程序返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。(返回值必须按照从大到小的顺序排列)
Sample:
@echo off
XCOPY F:\test.bat D:\
IF ERRORLEVEL 1 (ECHO 文件拷贝失败
) Else IF ERRORLEVEL 0 ECHO 成功拷贝文件
pause
很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),称为错误码errorlevel或称返回码。
常见的返回码为0、1。通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令。
4) else
语法: if 条件 (成立时执行的命令) else (不成立时执行的命令)
如果是多个条件,建议适当使用括号把各条件包起来,以免出错。
Sample: if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3 )
注:如果 else 的语句需要换行,if 执行的行尾需用“^”连接,并且 if 执行的动作需用(括起来),否则报错
Sample: if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) ^
else (echo comment3 )
5) 比较运算符:
EQU - 等于 (一般使用“==”)
NEQ - 不等于 (没有 “!=”,改用“ if not 1==1 ”的写法)
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
9.choice 命令
choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的 errorlevel,
然后配合 if errorlevel 选择运行不同的命令。
注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。
choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。
使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……
Sample: choice /c:dme defrag,mem,end
将显示: defrag,mem,end[D,M,E]?
Sample:
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag (应先判断数值最高的错误码)
if errorlevel 2 goto mem
if errotlevel 1 goto end
10.for 命令
for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。
1) for {%variable | %%variable} in (set) do command [command-parameters]
%variable 指定一个单一字母可替换的参数。变量名称是区分大小写的,所以 %i 不同于 %I
在批处理文件中使用 FOR 命令时,指定变量建议用 %%variable而不要用 %variable。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
2) 如果命令扩展名被启用,下列额外的 FOR 命令格式会受到支持:
a.FOR /D %variable IN (set) DO command [command-parameters]
如果集里面包含通配符,则指定与目录名匹配,而不与文件名匹配。
b.FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。
如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。
c.FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。
如:(1,1,5) 将产生序列 1 2 3 4 5; 而(5,-1,1) 将产生序列 (5 4 3 2 1)。
d.有或者没有 usebackq 选项:
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
参数"options"为:
eol=c - 指一个行注释字符的结尾(就一个,如“;”)
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。
m-n格式为一个范围。通过 nth 符号指定 mth。
如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。
usebackq - 指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。
3) Sample:
1. 如下命令行会显示当前目录下所有以bat或者txt为扩展名的文件名。
for %%c in (*.bat *.txt) do (echo %%c)
a. 如下命令行会显示当前目录下所有包含有 e 或者 i 的目录名。
for /D %%a in (*e* *i*) do echo %%a
b. 如下命令行会显示 E盘test目录 下所有以bat或者txt为扩展名的文件名。
for /R E:\test %%b in (*.txt *.bat) do echo %%b
for /r %%c in (*) do (echo %%c) :: 遍历当前目录下所有文件
c. 如下命令行将产生序列 1 2 3 4 5
for /L %%c in (1,1,5) do echo %%c
d. 以下两句,显示当前的年月日和时间
For /f "tokens=1-3 delims=-/. " %%j In ('Date /T') do echo %%j年%%k月%%l日
For /f "tokens=1,2 delims=: " %%j In ('TIME /T') do echo %%j时%%k分
e. 把记事本中的内容每一行前面去掉8个字符
setlocal enabledelayedexpansion
for /f %%i in (zhidian.txt) do (
set atmp=%%i
set atmp=!atmp:~8!
if {!atmp!}=={} ( echo.) else echo !atmp!
)
:: 读取记事本里的内容(使用 delims 是为了把一行显示全,否则会以空格为分隔符)
for /f "delims=" %%a in (zhidian.txt) do echo.%%a
4) continue 和 break
利用 goto 实现程序中常用的 continue 和 break 命令, 其实非常简单
continue: 在 for 循环的最后一行写上一个标签,跳转到这位置即可
break: 在 for 循环的外面的下一句写上一个标签,跳转到这位置即可
Sample: (伪代码)
for /F ["options"] %variable IN (command) DO (
... do command ...
if ... goto continue
if ... goto break
... do command ...
:continue
)
:break
常见bat命令(二)相关推荐
- jenkins:常用bat命令(八)
8常见bat命令 Windows批处理(cmd/bat)常用命令小结 来源 https://www.cnblogs.com/dongzhuangdian/p/5510941.html 前言 批处理文件 ...
- Bat命令:从Ftp获取文件以及数据导入
Bat命令-->ftp获取文件,并导入数据库 1.生成ftp命令,放在ftp.txt文件夹中新建一个bat文件(1.createscript.bat) @echo open 服务器IP > ...
- python常见模块命令(os/sys/platform)
python常见模块命令(os/sys/platform) 一.Os Python的标准库中的os模块主要涉及普遍的操作系统功能.可以在Linux和Windows下运行,与平台无关. os.sep 可 ...
- java基本命令_java基础篇 快捷键 常见Dos命令等等
(一) 计算机基础介绍 (二) jdk 安装 (三) 环境变量介绍及配置 (四) HelloWorld 实现 一 . 计算机概述 (1) 计算机 计算机(computer)俗称电脑,是一种用于高速计算 ...
- 常用 doc bat 命令总结
目录 常用链接 ・单词 ・Linux 本地常用命令 1.删除当前目录下的所有文件 2.删除当前目录下的所有文件夹 18. << EOF (<)<> 19. Git Bas ...
- bat 复制文件夹_新建366个文件夹,你用了2小时,我使用excel与bat命令1分钟搞定...
Hello,大家好,今天跟大家分享下,我们如何使用excel与bat命令为2020年的每天都新建一个文件夹,他的操作也并不难,下面就让我们来一起操作下吧 一.填充日期 想要为2020年的每一天都新建一 ...
- 如何时重启打印机服务bat命令,打印机重启服务脚本 Win7打印机服务怎么开启 Win7开启打印机服务的设置的两种方法
重启打印机服务bat命令 @echo off echo 停止打印服务 net stop Spooler echo 重新启动打印服务 net start Spooler echo 完成!!!! paus ...
- MYSQL数据库DML常见的命令
DML常见的命令 insert into update delete 插入数据 insert into 方式一 (不推荐) insert into 表名 values (值1, 值2 , ....); ...
- 常见DOS命令及自定义DOS命令
一,打开命令行窗口的方式 1,开始–>Windows系统–>命令提示符 2,Win键+R键调出运行窗口后输入cmd 3,文件管理器地址栏中写入cmd 选中地址栏中内容后,可以在其前面或后面 ...
- 【Linux】基础特性与常见系统管理命令详解1
目录 一.Linux基础特性 1.Tab 命令补全 2.快捷键的使用 3.命令行历史 4.命令别名 5.变量 变量种类 6.tee管道 7.分号: 单引号'' 双引号"" 反单引号 ...
最新文章
- python截取数组的一半_python:28.数组中出现次数超过一半的数字
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- androidstuido_schooltest_4_phone
- LSGO软件技术团队2015~2016学年第九周(1026~1101)总结
- centos mysql无法启动 sock_【零基础学云计算】MYSQL的主从复制、读写分离
- python玩王者荣耀皮肤碎片怎么获得_教你用Python代码免费获取王者荣耀全英雄皮肤...
- 一个dsp最小系统至少要有_苏州设公厕指示牌,每500米至少要有一个
- 做软件项目经理需要具备的品质和素质
- 阿里面试整个流程(已OC)
- Navicat连接本地数据库10038,1251
- 广州电子路考视频发布 2014广州电子路考考点
- PLUS模型教程五:多情景设置,附全套教程练习数据
- OTL电路与OCL功放电路的区别
- 操作系统磁盘调度算法
- Python开发案例:制作二维码
- 阿里云 部署SpringBoot和Vue项目 亲测可用(第一次部署经验贴)
- QQ自动强制加好友代码
- kurento服务器搭建(docker方式)
- poi编辑word中的chart,对图表数据替换,并刷新图表
- node.js学习-第二章节
热门文章
- 『杭电1726』God’s cutter
- 打印时去除页眉和页脚
- 深入理解Java虚拟机 4.JVM垃圾回收机制详解
- 手机h5像素_移动端H5页面的设计稿尺寸大小规范
- win10计算机本地组策略编辑器,win10本地组策略编辑器找不到怎么办_win10电脑没有gpedit.msc的解决办法...
- SqlServer的填充因子
- GPRS通信原理及应用特点
- 企业级负载均衡LVS集群——DR模式下的(加权)轮询调度器、DR模式下的健康检测(ldirectord)
- 回顾计算机发展史:速度惊人_升级并发布:第24周回顾
- Java云同桌学习系列(二十二)——mongoDB数据库