陈年老酒
-----回味DOS
引子
在WINDOWS已经进化到 VISTA 的今天,想必已经很少人会记得我们还有一个老朋友,名字叫做DOS。记得以前用286-386的时候,还没有图形界面的操作系统,PC电脑对于绝大多数人来说就是DOS(有钱烧麦金塔的人忽略,呵呵)。
其实我也是很长时间没有碰过DOS了,虽然偶尔也会用一下命令行模式,但是目的也仅限于查看IP和检查网络是否通畅。幸运的是最近在处理一些文件发布方面的事情的时候,苦于不停地CTRL+C – CTRL+V 然后还要修改名字,而且还需要把数千个文件发布到二十几台服务器的烦恼,不得不再一次祭出这个老法宝,多亏这位DOS老朋友宝刀不老,帮我解决了大麻烦了。
转念一想,也许并非我一个人这么幸运碰到这样变态的发布工作,于是把这几天用到的一些DOS方面的命令记录下来,给和我同样幸运的忍受发布文件工作的同胞们提供另外一个解脱的途径。
顺带的说一句,我这里说的DOS其实和原来的DOS已经有很大的差别,所以我后面说的DOS其实都是WINDOW里面的命令行工具,为了说起来方便,叫着也顺口,就直接说DOS了。我后面的用词上面 DOS=命令行=COMMAND
废话说了一堆堆,切入正题吧。
我先说一下我为什么需要创建时间戳目录。其实是这样的,我需要把一个网站发布到二十几台服务器上面。在做更新的时候,也要求同时更新。大家做过更新工作的就会知道,难免会发生错误或者客户的要求突然改变,需要恢复到以前的版本。怎么办呢?好办啊,更新之前把老的版本备份一次嘛。对了,就是这样,我把需要更新的部分先复制到一个用时间作为名称的目录,所以这个目录是即时创建。这个时候就用到了创建时间戳目录这个方法(当然了,大哥你时间充裕并且服务器允许的话,你用VC\VB\C#\JAVA什么的写一个用来备份和同步的AP丢上服务器我自然没话说,只是我这边的情况不允许)。下面我就来说一下我怎么操作的。
大家应该知道在命令行的模式下,获取日期的方法是这样子
C:>DATE 当前日期: |
而获取时间的方法则是
C:>TIME 当前时间:17:55:30.63 |
可是上面的得到的是时间和日期,并不时在MD的时候所需要的字符串,怎么解决呢?DOS下面有一个转换成字符串的方法:
u %变量%
这样子就是表示取变量的值转换到字符串。
不过%DATE%和%TIME%取出来依然并非我需要的字符串。我预期的时间戳格式是这样的 YYYYMMDDHHMMSS 例如20060727175530 这样子。因此我们还需要处理一下这个字符串。在命令行里面我们可以通过
u %变量名:~起始位置,长度%
这样的格式来取得字符串中特定位置的子串,
例如:
%DATE:~0,4% 得到 2006
%DATE:~5,2% 得到 07
%DATE:~8,2% 得到 27
现在简单了,得到我需要的字符串,下面这样操作就可以了
u %DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
创间时间戳目录
好了,目录名都已经出来了,还有什么困扰呢,呵呵呵,组合上我们亲爱的MD命令,就搞定了,大家可以试试看
MD %DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
接下来我和大家分享一下如何用命令行来管理WINDOW服务
因为我是用.NET写程序的,所以我这边描述的是怎样用DOS安装.NET开发的WINDOWS服务其他的语言编写的WINDOWS服务我没有安装过,不过我相信应该也有相应的办法来安装。
其实我会想到要用命令行来控制WINDOWS服务,起因是我的笔记本性能不够好,平时我要玩游戏(例如WOW)的时候,总是会要打开WINDOWS的服务管理器来关闭大约十几个服务,释放一些内存,以便让我的笔记本运行WOW的时候比较流畅,后来觉得每次都这么干真的是很麻烦,索性写了一个批处理,每次玩WOW的时候只要双击一下,所有需要关闭的服务就依次关闭了,再也不用打开服务管理器去一个个的找出来关闭了。希望和我有同样需要的朋友能从这里得到一点帮助,嘿嘿。那我们就开始吧
命令格式如后:NET STOP 服务名称
有朋友就会问了,服务名称是什么东西呢?简单!打开服务管理器,第一列就是服务名称了,COPY过来就好了,呵呵呵
好了,介绍了关闭,咱自然还得打开,成天打WOW自然是惬意,可是不工作没饭吃呀。要重新启动那些服务,你要是不嫌麻烦,可以选择重新启动计算机,也可以打开服务管理器逐个找出来启动。废话不多说,我们还是推荐用命令行批处理。
现在就说如何启动WINDOW服务
命令如后:NET START 服务名称
把你刚才写在关闭服务的那个BAT文件里面的所有服务名称都COPY过来吧。要不然把 STOP 替换成 START 然后另存为,也是一个不错的偷懒方法,既然目的就是偷懒,索性将偷懒进行到底~~
有了关有了开,我们现在再提一下如何安装.NET开发的WINDOW服务。前面废话说太多了,这里就不多说废话了,直接把我现在使用的BAT文件内容贴出来,大家参考着自己写就可以了,其实蛮容易的。
//新建目录 MD %SYSTEMROOT%\XXX\ //拷贝文件 COPY *.* %SYSTEMROOT%\XXX\ //这句最重要,这是安装服务 %SYSTEMROOT%\MICROSOFT.NET\FRAMEWORK\V1.1.4322\INSTALLUTIL.EXE %SYSTEMROOT%\XXXX\MYSERVICE.EXE //安装好了以后启动服务 NET START MYSERVICE //退出命令行状态 EXIT |
NET STOP MYSERVICE NET START MYSERVICE EXIT |
//卸载之前一定要先停止服务 |
删除命令常用的是DEL 和DELTREE
DEL FILEPATH /P 是自动确认删除文件
DELTREE /Y FOLDERPATH 是自动确认删除文件夹
还有一种方法,可以通过文本文件把参数传入命令例如下面这个
这种方法不仅限于自动确认删除,在很多需要输入参数的地方都很好用。