BAT批处理文件入门-笔记

BAT批处理文件入门


@echo off 啥意思

1 @的作用是让执行窗口中不显示它后面这一行的命令本身也就是echo off 这几个单词。首行的@echo off中,@的作用就是让脚本在执行时不显示@后面的echo off部分。

2 echo 啥意思

  echo是“回显”的意思。echo有两种状态:打开和关闭。也就是echo on 和echo off两个命令。如果直接执行echo命令将显示当前echo命令状态(off或on)。执行echo off将关闭回显,关闭回显则后面的所有命令都不显示命令本身,只显示执行后的结果,除非执行echo on命令。@命令和echo off命令联合起来,达到了两个目的:不显示echo off命令本身,不显示以后各行中的命令本身。总的来说,这个bat文件中所有命令都不显示;

 2.2用echo显示信息

 当执行echo Default BAT file name is START.BAT  的时候,Default BAT file name is START.BAT将在脚本执行     后的窗口中显示,而echo命令本身不显示。


3 :: 

这个命令的作用很简单,它是注释命令,后面的内容在执行时不显示,也不起任何作用,因为它只是注释,只是增加了脚本的可读性。

4 pause

中文为“暂停”的意思。它的作用,是让当前程序进程暂停一下,并显示一行信息:请按任意键继续. . .。

5、goto和:

goto是个跳转命令,: 是一个标签。当程序运行到goto时,将自动跳转到:定义的部分去执行了。程序在运行到goto时就自动跳转到:标签定义的部分执行。如下例,goto usage之行的时候,就自动跳转到最后一行定义的:usage部分之行,结果是显示脚本usage(usage就是标签名称)。不难看出,goto命令就是根据这个冒号和标签名称来寻找它该跳转的地方,它们是一一对应的关系。goto命令也经常和if命令结合使用。

if "%1"=="" goto usage 
::if input without paramater goto usage 
if "%1"=="/?" goto usage 
::if paramater is "/?" goto usage 
if "%1"=="help" goto usage 
.
.
.  
:usage 

goto命令的另一种用法一:提前结束程序。在程序中间使用goto命令跳转到某一标签,而这一标签的内容却定义为退出。 
如: 

…… 
goto end 
…… 
:end 

6 %符号

6.1 变量的引用

@echo off
set a=123   rem定义一个变量a 赋值为123
echo %a%    rem显示出变量a的值(如果不加% %系统会把a当字符处理了,不会当成变量的) 

6.2 %%i

 %%i 这种变量是for 语句里面 特有的变量,还有一种是外部变量,接受外部参数的格式是%1 -%9 共9个变量;

只有在批处理里面才写 两个 %% 号表示变量,cmd中只用 一个 % 号。反正只要你在批处理文件里面用 for,变量就用 %%。例如

批处理中的写法

for %%i in (1 2 3 4 5 ) do echo %%i

为什么批处理中用两个 %%,其实是编译器编译的时候要屏蔽一个

cmd窗口中写法

for %i in (1 2 3 4 5 ) do echo %i

现在说下外部变量,是系统制定的,只有9个,专门保存外部参数的,就是运行批处理时加的参数。只有 %1 %2 %3 %4 ...... %9

例如 

@echo off 
echo  %1
echo  %2
echo  %3
echo  %4
将上面的代码复制到记事本。保存格式为 bat
现在怎样传递参数给这个批处理,如下
在开始>>运行 里面输入 cmd 确定
在弹出来的窗口中 输入 上面 批处理文件 的 完全路径名,然后就加要传递的参数了 例如 c: ext.bat aaaa bbbb cccc dddd eeeee
上面 aaaa bbbb cccc dddd eeeee
就是传递给 批处理 “参数”这些参数 会保存在 %1至 %9 这9个变量名,最多只能保存 9 个。运行下就知道了,上面批处理文件中 %1变量保存的是aaaa
%2 保存的是 bbbb
%3 保存的是 cccc
%4 保存的是 dddd
%5 是 eeee 上面没有用到 %5变量

参考信息:http://www.jb51.net/article/7131_all.htm

https://zhidao.baidu.com/question/133405123.html



原文地址:https://www.cnblogs.com/xf666/p/7011287.html