一、call 命令问题调试
调试:在c:\根目录建立1.bat,2.bat。当调用与被调用的文件在同一个目录下时,不用制定路径。
问题(1)
新建1.bat,2.bat并放在c盘根目录
1.bat内容:
@echo off
echo 调试1.bat使用call调用2.bat以后是否直接从头运行被调用的批处理程序2.bat。
echo ~~~~~~~~~~~~~~~~~~~~~~~~~
echo ~~~~~~~~~~~~~~~~~~~~~~~~~
echo ~~~~~~~~~~~~~~~~~~~~~~~~~
echo 这是1.bat的第一句命令。
echo 下面是命令call c:\2.bat。
pause
cls
rem 清屏命令
call c:\2.bat
rem 路径为c盘根目录,当调用与被调用的文件在同一个目录下时,不用制定路径。
pause
echo ~~~~~~~~~~~~~~~~~~~~~~~~~
echo ~~~~~~~~~~~~~~~~~~~~~~~~~
echo 如果上面的显示的是:
echo 这是2.bat的第一句话。
echo 这是2.bat的第二句话。
echo 2.bat运行完毕。
echo 说明1.bat使用call调用2.bat以后是直接从头运行被调用的批处理程序2.bat的。
pause
cls
echo 问题一测试完成。
echo 按任意键退出。
pause
exit
rem 推出程序
2.bat内容
@echo off
echo 这是2.bat的第一句话。
echo 这是2.bat的第二句话。
echo 2.bat运行完毕。
(3)
@echo off
echo “call 命令接受用作调用目标的标签。”是否是指在1.bat中可以含有call :label,那么call
:label与goto :label有什么区别。
echo 第一句话
echo 第二句话
echo 使用call跳到第四句话
pause
call jumper
echo 第三句话
:jumper
echo 第四句话
echo ~~~~~~~~~~~~~~~~~
echo 如果显示的是“第四句话”,并且不显示“第三句话”证明call可以调用label
pause
exit
运行界面如下:
按任意键,显示:
图显示错误:’jumper’不是内部或外部命令,也不是可运行的程序
有错误提示可推断出,“用作调用目标的标签”指的是内部或者外部命令,即dos的命令,可运行的程序指.com .bat结尾的可执行程序。
改为如下语句测试:
@echo off
echo “call 命令接受用作调用目标的标签。”
echo 第一句话
echo 第二句话
pause
call ver
rem ver为显示版本的命令,此处是为了测试方便,也可以使用dir目录命令查看一下。效果一样的。
echo 第三句话
echo 第四句话
echo 按任意键退出
pause
exit
显示如下:
测试成功。
二、start命令调试
问题1:
@echo off
start ver
pause
显示界面如下:
@echo off
ver
pause
显示界面如下:
测试结果:使用start会重新弹出一个窗口。
批处理命令教程——简单批处理内部命令
批处理是什么?
批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。它的构成没有固定格式,遵守以下这条:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。简单的说,它的作用就是自动的连续执行多条命令,批处理文件的内容就是一条一条的命令。比如你想执行几条dos命令(批处理的运行平台的dos),你可以把那几条命令写成一个批处理,运行的时候它就会逐条执行。
创建批处理文件
建立一个任何格式文件,后缀名改成.bat即可。在文件上右击,编辑,可以对批处理进行修改编辑,双击直接运行文件。
1、Echo
功能:打开关闭回显功能,或显示消息。默认显示回显。
语法:echo [] [message]
常用:echo off关闭回显,可以不显示我们的命令。
注意:echo命令默认是显示回显所以***编程的时候第一句都是@echo off
2、@ 命令
功能:不显示@后面的命令
常用:常用命令就是在每一句代码前面都加上@命令,不显示任何一句命令。开头使用了echo off,照样可以不显示我们的命令。
3、Pause
功能:运行 Pause 命令时,将显示下面的消息:
Press any key to continue . . .
常用:用于交互示提醒或者调试程序,相当于下断吧。
注意:命令只是在这里暂停,当你按下任意键以后程序回继续执行后面的语句。
4、rem ,::
功能:注释命令。
5、goto
功能:跳转到标签,然后程序将从下一行开始执行。
语法:goto label 标签以“:”开头。
6、call
功能:调用另一个批处理程序。call 命令接受用作调用目标的标签。
语法:call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
注意:call可以调用自身,就是可以生成死循环。
7.start 命令
调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。
8、If 命令
有三种格式:
1、if "参数" == "字符串" 待执行的命令
参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
如if "%1"=="a" format a:
if =={} goto noparms
if =={} goto noparms
2、if exist 文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
如if exist config.sys edit config.sys
if exist c:\boot.ini ver
文件名可制定路径,如果不制定即为当前目录。
3、if errorlevel / if not errorlevel 数字 待执行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2
DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。
9、管道命令|、>、>>
| 的作用,就是把前一命令的输出当后一命令的输入来用
| more 显示满屏后暂停,当按回车时,变成一行一行的出现;按下空格键时一屏幕一屏幕显示,直到全部显示完为止;按其他键自动停止返回DOS。
more 和type命令的异同
他们都可以显示内容,more是一屏幕一屏幕的显示,type是一次全部打开显示。
>、>>
都是输出重定向命令,就是把前面命令的输出写入到一个文件中。如果没有此文件名,会自动建立。这两个命令的唯一区别是,>会清除掉原有文件中的内容后把新的内容写入原文件,而>>只会另起一行追加新的内容到原文件中,而不会改动其中的原有内容。
10、组合命令&、&&、||
&
它的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败。
&&
与&命令不同之处在于,它在从前往后依次执行被它连接的几个命令时会自动判断是否有某个命令执行出错,一旦发现出错后将不继续执行后面剩下的命令。
||
这个命令的用法和&&几乎一样,但作用刚好和它相反:利用这种方法在执行多条命令时,当遇到一个执行正确的命令就退出此命令组合,不再继续执行下面的命令。
还有一个for命令,我们单独写一篇文章介绍。学了几天批处理,感觉到批处理这东西也不是太难,dos命令学好了掌握批处理很容易。
学习批处理的重点是通道,组合,if命令,for命令,还有就是参数的使用。把命令介绍完了以后我们会在以后的学习中用一些实例去讲,那样跟容易理解。
转载于:https://blog.51cto.com/batcracker/678494