windows脚本编写及使用方法
windows脚本
在 Windows 平台下,有时候会通过脚本来做一些快速的批量的操作,不仅节省时间,使用起来还很方便,可以进行批量处理文件,杀死进程等操作。脚本使用方法总结的比较好的一篇文章见:传送门。
脚本常用示例
(1)创建 bat 脚本及中文乱码问题
在 Windows 平台下,新建一个文本文档,然后将其后缀名改为 bat 即可,例如:test.bat,这样就创建好了一个脚本文件,添加内容后直接双击文件即可运行,简单易用。
不过,这种方法新建的脚本常常会无法正常显示中文。
原因:
批处理文件,是以ANSI编码方式。若以别的方式(如UTF-8)编辑了批处理,转换成ANSI格式即可,正常创建的文件的格式都是utf-8的。
解决:
在代码里修改执行时的编码格式:
@echo off
::后续命令使用的是:UTF-8编码
chcp 65001
echo 中文
pause
其他 类似转换:
doc 代码页(自行百度):
chcp 65001 就是换成UTF-8代码页
chcp 936 可以换回默认的GBK
chcp 437 是美国英语
实现sleep定时功能
在实际使用中,经常会想要定时去处理东西,但是windows脚本很奇怪,竟然没有类似linux 下的sleep()函数功能,很是吃惊。网上多是利用ping指令来模拟定时功能。例如:
ping 168.11.1.1 -n 1 -w 1000 >nul
切记,这个ip地址一定要不能ping通,要是能ping通的话,时间就完全不对了。需要更换一个不能ping通的ip地址。
-n 参数为ping的次数,-w为每一次的超时时间,单位是毫秒,1000即1s,需要其他时间可相应进行换算。所以上述指令可以模拟出1s的时间,类似于linux下的sleep(1)。这个可以用于脚本的时间精确要求不高场景。
死循环功能脚本
在写脚本时,有时想要用到死循环进行测试,可使用以下示例:
:loop
::添加自己要执行的任务
echo add your own work !
goto:loop
利用goto功能来无线跳转,实现类似while(1)死循环的功能。
pause后重新执行
@echo off
:loop
set /p var=please input num:
echo your input num=%var%
pause
goto:loop
如上,每执行一次便会暂停,按键enter后便会重新全部执行,主要还是利用goto实现总体的循环。
查看进程及杀死进程
使用tasklist指令来查看windows下正在运行的进程。
tasklist指令的使用方法如下:
可以通过PID来杀死进程,也可以直接杀死对应的进程名称,*.exe。
例如::: 利用进程名杀死对应进程进程TASKKILL /IM notepad.exe:: 利用pid杀死1230 1241 1253 及其子进程TASKKILL /PID 1230 /PID 1241 /PID 1253 /T::其他TASKKILL /F /IM cmd.exe /TTASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exeTASKKILL /S system /U 域\用户名 /FI "用户名 ne NT*" /IM *TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
setlocal 与 变量延迟
本条内容引用[英雄出品]的批处理教程:
要想进阶,变量延迟是必过的一关!所以这一部分希望你能认真看。
为了更好的说明问题,我们先引入一个例子。
例1:
@echo off
set a=4
set a=5 & echo %a%
pause
结果:4
解说:为什么是4而不是5呢?在echo之前明明已经把变量a的值改成5了?
让我们先了解一下批处理运行命令的机制:
批处理读取命令时是按行读取的(另外例如for命令等,其后用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的变量赋值。我们现在分析一下例1,批处理在运行到这句“set a=5 & echo %a%”之前,先把这一句整句读取并做了预处理——对变量a赋了值,那么%a%当然就是4了!(没有为什么,批处理就是这样做的。)
而为了能够感知环境变量的动态变化,批处理设计了变量延迟。简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,也就是说“延迟”了对变量的赋值。
那么如何开启变量延迟呢?变量延迟又需要注意什么呢?举个例子说明一下:
例2:
@echo off
setlocal enabledelayedexpansion
set a=4
set a=5 & echo !a!
pause
结果:5
解说:启动了变量延迟,得到了正确答案。变量延迟的启动语句是“setlocal enabledelayedexpansion”,并且变量要用一对叹号“!!”括起来(注意要用英文的叹号),否则就没有变量延迟的效果。
分析一下例2,首先“setlocal enabledelayedexpansion”开启变量延迟,然后“set a=4”先给变量a赋值为
4,“set a=5 & echo !a!”这句是给变量a赋值为5并输出(由于启动了变量延迟,所以批处理能够感知到动态变化,即不是先给该行变量赋值,而是在运行过程中给变量赋值,因此此时a的值就是5了)。
再举一个例子巩固一下。
例3:
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,5) do (
set a=%%i
echo !a!
)
pause
结果:
1
2
3
4
5
解说:本例开启了变量延迟并用“!!”将变量扩起来,因此得到我们预期的结果。如果不用变量延迟会出现什
么结果呢?结果是这样的:
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
即没有感知到for语句中的动态变化。
提示:在没有开启变量延迟的情况下,某条命令行中的变量改变,必须到下一条命令才能体现。这一点也可以加以利用,看例子。
例:交换两个变量的值,且不用中间变量
@echo off
::目的:交换两个变量的值,但是不使用临时变量
::Code by JM 2007-1-24 [email=CMD@XP]CMD@XP[/email]
::出处:http://www.cn-dos.net/forum/viewthread.php?tid=27078
set var1=abc
set var2=123
echo 交换前: var1=%var1% var2=%var2%
set var1=%var2%& set var2=%var1%
echo 交换后: var1=%var1% var2=%var2%
pause
输出空行
echo输出空行
原生态的解释遗漏了echo另外一个重要功能:输出空行。在DOS脚本中,有时为了调试方便,加入一下空行。很多文章或者教程给出的解决方案都是在echo后面加一个点号echo.,这样就会输出空行。即:
echo.
其实:echo输出空行的方法至少有十种:
echo=
echo,
echo;
echo+
echo/
echo[
echo]
echo:
echo.
echo
这十种方法可以分为三组,每组的效率依次递减,第一组的效率是最高的。
修改cmd窗口大小、标题、字体、背景颜色
①改变窗口大小
mode con cols=80 lines=80
②设置cmd窗口的标题
title=设置窗口标题
③改变字体及背景颜色
color [fb]
例如: color 0a
说明:
F:前景颜色,即字体颜色
B:背景颜色,即CMD窗口的背景颜色
颜色属性由两个十六进制数字指定 – 第一个为背景,第二个则为
前景。每个数字可以为以下任何值之一:
0 = 黑色 8 = 灰色1 = 蓝色 9 = 淡蓝色2 = 绿色 A = 淡绿色3 = 湖蓝色 B = 淡浅绿色4 = 红色 C = 淡红色5 = 紫色 D = 淡紫色6 = 黄色 E = 淡黄色7 = 白色 F = 亮白色
例如: "color 0a " 是在背景色为黑色上设置字体颜色为淡绿色。
windows脚本编写及使用方法相关推荐
- Windows脚本编写
一.关于脚本语言 脚本语言就是由专用解释器以行为单位解释执行的一种文本形式编程语言,象Windows的批处理.Unix/Linux的shell.perl和awk等脚本语言都属于这个范畴.它们大多都是由 ...
- post方法就返回了一个string字符串前台怎么接_LoadRunner脚本编写教程Getamp;Post
>>>推荐阅读<<< 1.性能测试学习笔记-场景设计 2.性能测试的重要意义 3.性能分析流程及方法 4.应用系统性能调优之性能分析 测试过程中常会遇到需要用Loa ...
- windows编写linux脚本,适用于 Windows 和 Linux 的脚本编写工具包
提供脚本编写功能,支持部署高容量 ProLiant 服务器安装 在 Windows 及 Linux 环境中均支持 HPE ProLiant BL/ML/DL/SL.XL 100.300.500.700 ...
- windows的bat脚本编写
windows bat脚本编写 命令操作符 1) echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置. 语法 echo [{ on|off ...
- 在c#中调用windows脚本的方法
在c#中调用windows脚本的方法 方法1:直接调用 CODE: System.Diagnostics.Process proc = new System.Diagnostics.Proce ...
- autohotkey编写windows脚本实现test.lab试验数据快速导出
autohotkey编写windows脚本实现test.lab试验数据快速导出 #x:: MouseGetPos,x,y MsgBox,4,MousePosition,"%x%,%y%&qu ...
- KETTLE调度第三篇:Windows下调度Dos脚本编写和遇到的一些问题解决
KETTLE调度第三篇:Windows下调度Dos脚本编写和遇到的一些问题解决 参考文章: (1)KETTLE调度第三篇:Windows下调度Dos脚本编写和遇到的一些问题解决 (2)https:// ...
- QTP/UFT(二):自动化测试脚本编写方法
2021.04.24 自动化测试方案选取时需考虑的因素(康康就行,并不是很重要) 项目的影响:自动化测试能否对项目进度.测试覆盖率.风险有积极的作用,或者让开发更敏捷 复杂度:自动化是否容易实现,包括 ...
- linux 更新 图标缓存,Windows图标显示错误解决方法(清理图标缓存BAT脚本)
Windows图标显示错误解决方法(清理图标缓存BAT脚本) 作者:佚名 来源:网络整理 2015-3-26 使用Windows过程中经常会遇到程序图标显示异常,重启也无法解决:其实这个是图标缓存出现 ...
- Drcom客户端可以卸载了! 在Windows上编写bat脚本实现深大校园网认证, 并可断线重连(Drcom Pt版)
写在前面 之前有写文章分析了深大校园网的认证过程, 编写Linux脚本可在路由器等Linux设备上实现自动登录, 断线自动重连. 考虑到Windows才是主要使用者, 本篇文章分享在Windows上编 ...
最新文章
- Error: could not find function ... in R
- python 模拟浏览器selenium 微信_Spider-Python爬虫之使用Selenium模拟浏览器行为
- Jmeter实现WebSocket协议的接口和性能测试方法
- 报表需求源源不断?手把手教你提升报表通用性
- Oracle DBVERIFY 工具介绍
- php email 发送,php 发送 Email
- oracle scn与数据恢复,[Oracle] SCN与数据恢复的关系
- vs已经引用mysql还是不能用_VS2013与MySql建立连接;您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧[转载]...
- 打造IOS移动***测试平台
- Vue实战(六)通用Table组件
- hive元数据库表分析及操作
- mysql php 3级联动_php mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
- 最全计算机基础知识竞赛试题,计算机基础知识竞赛试题.doc
- golang六个常用的web 框架
- MTSP问题遗传算法解决代码及其案例
- css 软键盘,移动端键盘,数字键盘效果实现
- 元学习入门:MAML
- 智慧养老的发展形势及智慧养老热点、痛点、难点
- 系统设计都需要考虑什么
- 人气爆棚 航嘉亮相华中科技大学现场