上周写了个简单的命令行脚本,用来给WindowsXP定时关机。因为自己和朋友们挂冒险岛的时候需要让它自动下线关机(我以前都是在控制台自己敲命令的,可我很多朋友不会用起来也不方便直观),所以我就写了一个!

正如我在脚本里写的一样:“其实这个脚本没有什么技术含量的,写它主要是为了练练手,而且还可以方便朋友们。晚辈始终抱着学习的态度,还请高人们多加指点和批评,不要见笑!”
 
 
 
一、首先简单介绍一下脚本中用到的核心命令:
1 shutdown -s -f -t xx
-s
关闭本地计算机。
-f
强制运行要关闭的应用程序。
-t xx
将用于系统关闭的定时器设置为 xx 秒。默认值是 20 秒。
2 shutdown –a
-a
中止关闭。除了 -l ComputerName 外,系统将忽略其它参数。在超时期间,您只可以使用 -a
3 shutdown –i
-i
显示图形界面(这是微软未公开的参数)
 
(点击查看shutdown命令详解)
 
4 set /p variable=string
/p
variable 的值设置成输入行。
variable
指定需要设置或修改的变量。
string
指定要与指定变量关联的字符串。
 
(点击查看set命令详解)
 
二、定时关机脚本 v10.cmd
@echo off

REM /************以下为预处理部分************/

title Windows PowerOff Timer V1.0 
color F2

REM /************用户界面与菜单项************/

:begin
cls
echo.
echo **********************************************************
echo 此批处理脚本用来设置Windows定时关机 by Sch. 2007年11月10日
echo **********************************************************
echo.
echo ------ 系统关机定时器 V1.0 (Windows PowerOff Timer) ------
echo.
echo.
echo 请选择需要执行的功能:
echo.
echo [1]:启动标准倒计时关机任务;
echo [2]:终止当前倒计时关机任务;
echo [3]:使用高级选项(不推荐);
echo [4]:查看"功能介绍";
echo [5]:查看"使用说明";
echo [6]:查看"关于界面";
echo.
set /p choice=请输入相应序号:
echo.
echo.
goto %choice%

REM /**********以下为功能的实现部分***********/

REM /*[1]:启动标准倒计时关机任务*/
:1
echo ----------------------------------------------------------
echo.
echo 正在启动标准倒计时关机任务...
set /p cdtime=请您输入以秒计的倒计时时间(秒):
shutdown -s -f -t %cdtime% -c "                                    Powered by 系统关机定时器 V1.0"
goto end

REM /*[2]:终止当前倒计时关机任务*/
:2
echo ----------------------------------------------------------
echo 正在终止当前倒计时关机任务...
echo.
shutdown -a
goto end

REM /*[3]:使用高级选项(不推荐)*/
:3
echo ----------------------------------------------------------
echo 正在打开高级选项...
echo.
shutdown -i
goto end

REM /*[4]:查看"功能简介"*/
:4
echo ----------------------------------------------------------
echo.
(此处内容已省略)
echo.
echo.
pause
goto begin

REM /*[5]:查看"使用说明"*/
:5
echo ----------------------------------------------------------
echo.
(此处内容已省略)
echo.
echo.
pause
goto begin

REM /*[6]:查看"关于界面"*/
:6
echo ----------------------------------------------------------
echo.
echo 关于:
echo.
echo.
(此处内容已省略)
echo.
echo.
pause
goto begin

REM /***********以下为脚本结尾部分***********/

:end

其中:
set /p choice= 请输入相应序号:
goto %choice%
便于用户选择功能,其输入内容就是下面的 LABLE 值。
set /p cdtime= 请您输入以秒计的倒计时时间 ( 秒 ):
shutdown -s -f -t %cdtime%
让用户输入 shutdown 命令的超时(倒计时)时间。
三、心得体会:
其实写这个脚本我查了很多资料,但最后总结提取出来只有上面一点,脚本调试也花了不少时间,总之我学到了 shutdown 命令的用法和用户交互命令 set /p 在批处理中的灵活应用!
shutdown 命令用于 NT 系统的关机,经测试发现不加 -f 参数的话有时可能导致计算机在关机过程中无响应导致其无法关闭,发生这种情况一般来讲网络程序无法再使用网络,也就是说冒险岛可以“正常掉线”。
set /p 可以在批处理中用来让用户选择要执行的功能,也可以让用户输入后续命令的参数。这里要说明一下,网上许多文章提到用 choice 来实现用户选择功能,但事实上 Win2000 以后的系统并不带有 choice 命令,而是用 set 命令来代替了它。如果你在批处理脚本中使用了 choice 命令则执行的时候你会看到如下提示: 'choice' 不是内部或外部命令,也不是可运行的程序或批处理文件。
附: Windows XP 中有关 shutdown set 命令的详解 ( 摘录于 Windows 帮助 )
Shutdown
允许您关闭或重新启动本地或远程计算机。如果没有使用参数, shutdown 将注销当前用户。
语法
shutdown [{-l|-s|-r|-a}] [-f] [-m [//ComputerName]] [-t xx] [-c "message"] [-d[u][p]:xx:yy]
参数
-l
注销当前用户,这是默认设置。 -m ComputerName 优先。
-s
关闭本地计算机。
-r
关闭之后重新启动。
-a
中止关闭。除了 -l 和 ComputerName 外,系统将忽略其它参数。在超时期间,您只可以使用 -a 。
-f
强制运行要关闭的应用程序。
-m [//ComputerName]
指定要关闭的计算机。
-t xx
将用于系统关闭的定时器设置为 xx 秒。默认值是 20 秒。
-c "message"
指定将在 “ 系统关闭 ” 窗口中的 “ 消息 ” 区域显示的消息。最多可以使用 127 个字符。引号中必须包含消息。
-d [u][p]:xx:yy
列出系统关闭的原因代码。下表将列出不同的值。
说明
u
指定用户代码。
p
指定已计划的关闭代码。
xx
指定主要原因代码 (0-255) 。
yy
指定次要原因代码 (0-65536) 。
/?
在命令提示符显示帮助。
注释
一旦指定了主要和次要原因代码,您必须首先为计划使用某种特定原因的每个计算机定义那些原因代码。如果目标机器上没有定义原因代码,则事件查看器无法记录正确的原因文本。
范例
要在 60 秒内关闭 //MyServer ,强制运行要关闭的应用程序,在关机后重新启动系统,指定一个用户代码,指定计划关闭系统,然后记录主要原因代码 125 和次要原因代码 1 ,请键入:
shutdown -r -f -m //MyServer -t 60 -d up:125:1
Set
显示、设置或删除环境变量。如果没有任何参数, set 命令将显示当前环境设置。
语法
set [[/a [expression]] [/p [variable=]] string]
参数
/a
将 string 设置成可求值的数字表达式。
/p
将 variable 的值设置成输入行。
variable
指定需要设置或修改的变量。
string
指定要与指定变量关联的字符串。
/?
在命令提示符显示帮助。
注释
使用 “ 恢复控制台 ” 中的 set
set 命令具有不同的参数,可从 “ 恢复控制台 ” 中获得。
使用特殊字符
字符 < > | & ^ 是特殊命令外壳字符,在字符串中使用时必须位于 escape 字符 (^) 之前或用引号引起来(即, "StringContaining&Symbol" )。如果要使用引号将含有特殊字符的字符串引起来,则该引号将被设置成环境变量值的一部分。
使用环境变量
使用环境变量可控制某些批处理文件和程序的操作,并可控制 Windows XP 和 MS-DOS 子系统显示和工作的方式。 Autoexec.nt 文件中经常使用 set 命令设置环境变量。
显示当前的环境设置
当只键入 set 命令时,将显示当前的环境设置。这些设置通常包含用来帮助查找磁盘上程序的 COMSPEC 和 PATH 环境变量。 Windows XP 使用的两个其它环境变量是 PROMPT 和 DIRCMD 。
使用参数
当指定变量和字符串的值时,指定的变量值将被添加到该环境,而且该字符串与该变量关联。如果环境中已经存在该变量,新的字符串值将替代旧的字符串值。
如果只为 set 命令指定一个变量和一个等号(没有字符串),则与该变量关联的字符串值将被清除(就象变量根本不存在一样)。
使用 /a
下表按优先性从高到低的顺序列出了支持 /a 的运算符。
运算符
执行的操作
< >
分组
* / % + -
算法
<< >>
逻辑移位
&
按位 “ 和 ” 运算
^
按位 “ 异或 ” 运算
|
按位 “ 或 ” 运算
= *= /= %= += -= &= ^= |= <<= >>=
分配
,
表达式分隔符
如果使用逻辑 (&& ||) 或模 (%) 运算符,请使用引号将表达式字符串引起来。表达式中的非数字字符串将被视为环境变量名,其值将转化成数字然后才进行处理。如果指定当前环境中没有定义的环境变量名,将会分配零值,允许您对环境变量进行算术运算,而不需要使用 % 找回值。
如果从命令脚本外的命令行中运行 set /a ,则会显示该表达式的最终值。
数值是指十进制的数字,在前缀加 0× 则表示十六进制数字,加 0 则表示八进制数字。因此, 0×2 与 18 相同,也与 022 相同,八进制表示法容易引起混淆。例如, 08 和 09 不是有效数字,因为 8 和 9 不是有效的八进制数字。
使用 /p
要求有提示字符串。
支持延迟的环境变量扩展
已经添加延迟的环境变量扩展支持。默认情况下禁用该支持,不过可使用 cmd /v 对其启用或禁用。
使用命令扩展
当启用命令扩展(默认)并单独运行 set 时,将显示所有当前的环境变量。如果使用一个值来运行 set ,则会显示与该值匹配的变量。
在批处理文件中使用 set
创建批处理文件时,可以使用 set 命令创建变量,然后象使用编号变量 %0 到 %9 一样使用这些变量。也可以使用 %0 到 %9 变量作为 set 命令的输入。
从批处理文件调用 set 变量。
从批处理文件调用变量值时,必须将该值用百分号( % )括起来。例如,如果批处理程序创建了一个环境变量 BAUD ,则可以在命令行中键入 %baud% ,将与 BAUD 关联的字符串作为可替换参数使用。
范例
若要设置名为 TEST^1 的环境变量,请键入:
set testVar=test^^1
若要设置名为 TEST&1 的环境变量,请键入:
set testVar=test^&1
Set 将变量值设置成等号 (=) 后的内容。如果键入:
set testVar="test^1"
将得到如下结果:
testVar="test^1"
要设置名为 INCLUDE 的环境变量,使字符串 C:/Inc (驱动器 C 上的 /Inc 目录)与该变量关联,请键入:
set include=c:/inc
然后可以通过用在名称百分号 (%) 将 INCLUDE 括起,在批处理文件中使用字符串 C:/Inc 。例如,可能在批处理文件中包含以下命令,以显示与 INCLUDE 环境变量关联的目录内容。
dir %include%
处理此命令时,字符串 C:/Inc 将替代 %include% 。
还可以在批处理程序中使用 set ,将新目录添加到 PATH 环境变量中。例如:
@echo off
rem ADDPATH.BAT adds a new directory
rem to the path environment variable.
set path=%1;%path%
set
当启用命令表达式(默认)并使用一个值来运行 set 时,则会显示与该值匹配的变量。例如,如果在命令提示符键入 set p ,将得到如下结果:
Path=C:/WINNT/system32;C:/WINNT;C:/WINNT/System32/Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Stepping 1, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0801
ProgramFiles=C:/Program Files
PROMPT=$P$G
格式化图例
格式
含义
斜体
用户必须提供的信息
粗体
用户必须像显示的一样准确键入的元素
省略号 (...)
可在命令行中重复多次的参数
在括号 ([]) 之间
可选项目
在大括号 ({}) 之间;将选项用竖线 (|) 隔开。例如: {even|odd}
用户必须从中只选择一个选项的选项组
Courier 字体
代码或程序输出
下载地址:
1. http://download.csdn.net/source/287808  (CSDN内部链接)
2. http://sch0120.ys168.com/  (位于分类“技术博客”)
Sch. 2007 年 11 月 17 日

[批处理]自己写的“WindowsXP关机定时器”(提供源码和下载)相关推荐

  1. asp手写签名代码2021版提供源码控件

    今天接了一个小事,一个朋友想实现货物在线签收,要收货人在线签名,并保存入库,让我帮忙写一个asp的手写签名功能,忙活一下午实现了,估计会有很多人有这种需求,放网上吧 function lineCanv ...

  2. java验证码源码_Java通用验证码程序及应用示例(提供源码下载)

    评论 # re: Java通用验证码程序及应用示例(提供源码下载) 2009-11-27 17:09 零全零美 多谢博主写出这么好的总结,如果能加上汉字验证码,会更完美!  回复  更多评论 # re ...

  3. 转载一个很经典的--C# Socket TCP和UDP报文及端口测试工具的开发(提供源码)

    转载地址:http://www.ltmonitor.com/blog/?p=285 因为自己经常做Socket开发,经常要调试各种协议,如TCP.UDP和SIP等协议,还要维护多个服务器端和客户端的通 ...

  4. 微信小程序仿网易云音乐(使用云开发,提供源码)

    微信小程序仿网易云音乐(使用云开发,提供源码)!!!!!!!!!!! 源码: 链接:https://pan.baidu.com/s/1z_ZnRVbT4vjEENimi8yBQQ 提取码:u0o3 一 ...

  5. 表白弹药库 - 这是我为你写的散文诗(结尾附源码)

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  6. 基于pytest搭建接口自动化测试框架,提供源码

    基于pytest搭建接口自动化测试框架 框架整体介绍和方法教程 新框架(比这个功能多了很多,用例使用yaml编写) 源码框架结构 xmind项目结构介绍 源码地址 使用教程 1.全局变量设置和使用 2 ...

  7. ❤ ❤双手奉上京东生鲜页面(包含登录注册,购物车,商品页,商品详情页,调查问卷,提供源码!!!)❤ ❤

    提示:该项目不涉及SQL+Servlet+mysql+navicat, 提供源码:本项目源码:链接:https://pan.baidu.com/s/1v_pV4_ybIZrGYzpvG8Frsw 提取 ...

  8. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  9. 网页爬虫python代码_《用python写网络爬虫》完整版+源码

    原标题:<用python写网络爬虫>完整版+源码 <用python写网络爬虫>完整版+附书源码 本书讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中 ...

最新文章

  1. 工作9年开发面试华为要薪1W,华为员工:我司没有这么低工资的岗.....
  2. Java 常见异常种类
  3. BeagleBone Black Industrial 进阶设置(性能优化以及延长板载eMMC存储寿命)
  4. 线程的核心应用(DoubleCat)
  5. VTK:Utilities之ExtractFaces
  6. android linearlayout 方法,android布局----LinearLayout布局方式
  7. K210 / Openmv实现 大津法/Otsu最大类间方差法 自适应二值化
  8. c# mysql app.config_60. C# -- 读取 appconfig文件配置数据库连接的方法
  9. ZDB5202烧成控制器方法
  10. 作者:张岩,男,北京大学教授、博士生导师。
  11. Nginx之gzip压缩配置
  12. 智能药盒的设计与实现
  13. python 清华教程_清华推出 1564集Java Python视频教程,别再说找不到适合的教程了...
  14. 阿里云服务器ECS中扩容云盘后磁盘容量没有增加的解决方法
  15. 机器学习模型评估——混淆矩阵
  16. 字符串排序算法:低位优先排序(LSD)
  17. ffi Error:Dynamic Linking Error:Win32 error 126
  18. (每日更新)里里,阿里里,阿里阿里里:【第一期】喜欢的记得关注哈
  19. 华为9306查看光功率
  20. 选用焊接方法与焊接材料原则是什么

热门文章

  1. 聊城大学计算机学院格创,聊城大学计算机学院第九届科技学术节活动方案(9页)-原创力文档...
  2. 开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
  3. CentOS LiveCD LiveDVD DVD 等版本的区别 以及 最新版7.1下载
  4. 自己怎样看待在工作中犯错误
  5. 光伏“分化”日臻凸显 新一轮价格暗战将起
  6. POP3、SMTP和IMAP基础概念
  7. 【数据结构】猴子选王
  8. unity 表格 换行 \n
  9. javaScript对象的深拷贝和浅拷贝
  10. 手机python爬虫教程_python爬虫入门 之 移动端数据的爬取