没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
windows 脚本的语法
2018 年 11 月 29 日 10:39:52 whoami_I 阅读数:27
1、不想使得脚本里面的语句都输出来,可以使用@符号,这个符号所在的语句
可以隐去这一句的输出,若想整个脚本都不输出语句,则可以再文件的最开头使
用这一句:@echo off,如果在使用了这一句的前提下,又想是某一句显示出来,
可以这样写:
@echo on
echo 3
@echo off
这样 echo 3 就可以将命令显示出来
2、对变量的处理
(1)对变量的设置
给变量设置字符串值:
set var1=abcd
(2)对变量设置数字值,这个值是 int 类型的
set /a var2=10
这样把 var2 这个变量设置成了数字 10
(3)从输入设置变量的值
set /p var3="input a number"
(4)对变量的引用
将 var2 的值赋值给 var4
set var4=%var2%
(5)对变量的分割
一个典型的对变量的分割例子就是 log 文件的名称需根据时间来建立相应的文
件,一般这么写:
set tsp="%time:~0,1%"
if %tsp%==" " (set
date_time=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:
~6,2%) else (
set
date_time=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:
~6,2%
)
首先来看一看 date 和 time 变量是什么
echo %date%
2018/11/28 周三
echo %time%
16:40:43.32
这样就好办事了,首先看一下 date_time=%date:~0,4%%date:~5,2%%date:~8,2%的
意思,%date:~m,n%表示取从 date 变量的第 m 位(从第 0 位开始计数)开始
之后的 n 位字符,在这里就是取这样这句话的结果就是取“2018/11/28 周三”
的“2018”。
那么 tsp 是干嘛的?这个变量是测试是上午还是下午的,如果是上午,那么时间
的时这里就只有一位,最前面是空格,而不是默认为 0,所以需要判断,然后手
动加上 0 这一位。
再举一些变量分割的例子:
输入的命令 结果 效果
echo %var% 1234567890 显示所有
echo %var:~4% 567890 从第 4 个字符以后开始显示
echo %var:~4,3% 567 从第 4 个字符以后开始显示,并只显示前 3 个
echo %var:~-4% 7890 从倒数第 4 个字符开始显示
echo %var:~-4,3% 789 从倒数第 4 个字符开始显示,并只显示前 3 个
echo %var:~4,-2% 5678 从第 4 个字符以后开始显示,显示到还剩 2 个为止
echo %var:~0,3% 123 从头开始显示,并只显示前 3 个字符
echo %var:~0,-3% 1234567 从头开始显示,显示到还剩 3 个字符为止
set var2=%var:ld=ms and bugs% 将 var 变量中所有的 ld 换成 ms and bugs,输出结
果赋值给 var2
利用以上的规则进行一些字符串操作:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set a= abcd
::去除左边的空格
:left
if "%a:~0,1%"==" " set a=%a:~1% && goto left
echo %a%
::去除字符串所有的空格
set a=abcd efg
set a=%a: =%
echo %a%E
::去除字符串右边的空格
set a=abcdefg
:right
if "%a:~-1%"==" " (set a=%a:~0,-1%
echo %a%
goto right
)
echo %a%A
3、程序的控制语句
(1)if 语句
首先 if 判断是否两个数值相等,数值比较有“等于”、“大于”、“大于等
于”、“小于”、“小于等于”、“不等于”六种,这六种分别对应的写法:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
这些东西可以通过输入命令 if /?查看到。
当然等于还有一种写法就是“==”,例子:
@echo off
set /a a=1
set /a b=2
if %a% lss %b% echo aaa
if 5 gtr 4 echo bbbbb
if 3==3 echo ccccc
pause
if 还有一些比较特殊的用法,比如文件是否存在和变量是否存在。例子:
if exist aaa.txt echo exist
if defined a echo %a%
@echo off
set /a a=1
if %a%==2 echo 3
pause
在这里一定要注意,if 判断条件之后的语句一定要在同一行,否则就会报错,如
果想写多行,可以使用圆括号,比如:
if %a%=="haha haha" (
echo 3
)
其中“(”一定要在 if 的同一行
(2)for 语句
通过输入命令 for /?可以大致了解到 for 语句的集中使用方法
1、类似 c 语言的循环
@echo off
for /l %%i in (1,1,50) do echo %%i
pause
表示 i 在 1 到 50 每隔 1 这个序列里面取值,然后输出 i,在这里如果写的是脚
本,则要使用%%i,而不是%i,如果直接写在命令行里面,则 使用%i,另外这
里的变量名必须使用单个字母的变量,一定不能有多个字母,否则会报错。
这段语句就是输出 1 到 50.
2、遍历文件
@echo off
for %%i in (*) do echo %%i
pause
在这里会遍历所有当前目录下面的文件,注意不包含目录,目录不会输出。
如果想输出当前文件夹下面所有的目录:
@echo off
for /d %%i in (*) do echo %%i
pause
跳转语句
定义一个标识,然后跳转到这个标识
:ok
goto ok
剩余40页未读,继续阅读
资源评论
zgdqlc
- 粉丝: 20
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功