# WINDOWS脚本入门1-变量
# 基本命令
我对批处理的第一印象是新建一个记事本写几条cmd命令,然后改成bat后缀就可以直接运行。那么我们平常在cmd里输入命令时是怎样的呢?输入命令时是:
可以看到我们输入命令的时候也会显示出来,那么在批处理中每行的命令也是这样的,在执行前都会显示出命令,如果我们只想显示执行结果而不显示命令本身需要
@不想回显的命令
@只是作用这一条命令,如果想后面的命令都不想回显命令本身:
echo off
一般我们也不想这条命令回显,那么在这条命令加上@:
@echo off
如果想开启回显:
@echo on
暂停等待键盘响应:
pause
有上边的这些命令我们可以先输出一个hello world了:
@echo off
echo hello world
pause
接下来是一些不常用的命令,显示当前行的回显状态:
echo
2
3
4
5
这条命令会显示”ECHO 处于关闭状态”或”ECHO 处于开启状态”。有时候我们输出一个变量的值,如果这个变量为空,也会得到这个提示。
输出一个空行,相当于一个回车:
echo.
注意echo和.之间不能有空格。
# 变量
设置新变量,给变量赋值:
set 变量名=变量名
例子:
set money=10000
变量名的命名规则是:不能以数字开头,以字母或者下划线开头,且不区分大小写。
获取变量值:
%变量名%
例子:
%money%
从键盘获值赋值给变量:
set /p 变量名=要显示的提示信息
例子:
set /p money=请输入您想存钱的金额:
现在举个例子,同学们可以试着运行下:
@echo off
set money=1000
echo 初始金额:%money%
set /p money=你现在有多少钱:
echo 现在的金额:%money%
pause
2
3
4
5
6
现在我们想存入一部分钱:
@echo off
set money=1000
set money=%money%+100000
pause
2
3
4
但是这样会输出
1000+100000
对批处理不了解的同学可能会觉得很费解,我们不是想让这两个值想加么,怎么是这个结果,这是因为set 变量=值,这里值默认都按字符串处理。而批处理中字符串的拼接基本上就是两个字符串无缝放到一块就好。比如变量%money%和变量%owner%拼接的话:
%owner%拥有金额%money%
如果我们想让set =后面处理成表达式的话:
set /a money=%money%+100000
这样就会按数学表达式处理相加了。批处理中其他表达式是:
- () :分组
- ! ~ : 一元运算符
- * / % + – :算数运算符
- << >> : 逻辑移位
- & : 按位“与”
- ^ : 按位“异”
- | : 按位“或”
- = *= /= %= += -= &= ^= |= <<= >>= : 赋值
- , :表达式分隔符
表达式中的”与”,”或”,”异或”运算符,我们需要用双引号引起来 。比如:
@echo off
set /a b=3 "&" 4
echo %b%
set /a c=3 "|" 4
echo %c%
set /a d=5 "^" 4
echo %d%
set /a e=5 %% 3
echo %e%
set /a f=5/3
echo %f%
pause
2
3
4
5
6
7
8
9
10
11
12
注意有几个特殊的变量,%0,%1,%2,%3 . . . %9,%*
%0指的是自身批处理脚本的意思,他指当前批处理所在全路径。它有一个有意思的使用方式:
@echo off
set /a sum+=1
echo %sum%
pause
%0
2
3
4
5
自己调用自己导致无限循环!从而重复执行%0上边的语句。
%1,%2 … %9 是批处理脚本的参数,%*是一次输出所有参数。