您的位置:首页 > 其它

批学习

2015-09-28 11:34 99 查看
曾经的时候就认为批处理非常的奇妙,还借过一本批处理的小书来看,非常不幸的,没学下去,看没多久就看不下去了.来公司这段时间,常常干一些反复性的事,所以就想用批处理来完毕.可是吧,断断续续,看了非常长一段时间,好不easy才把一个57KB大小的chm给看完.内容不多,仅仅可以简单的学习一些比較常见的使用方法.想着好不easy才看完,不写点东西,怎么对得起学的批处理.所以就写了一些简单的操作.

我最频繁的操作莫过于,每天在家时Kill
SqlServer的一系列进程,以及在公司的时候Kill一些Oracle的进程,由于用不到,他们占内存又太大了.使用的语句就是taskkill,关闭进程;taskkill
/im 进程显示名,或者加上/f表示强制关闭进程,或者/im
pid,指定要终止的进程的PID.

所以写了例如以下的语句,@echo off是用来控制关闭回显,echo能够显示提示信息,rem用来凝视,taskkill关闭进程,/f表示强制,SqlServer的基本都要求强制关闭,否则关闭不了.关闭指定的PID,对于fdlauncher.exe刚刚他的PID为1664,下次就不一定是什么了.所以假设用PID,多次运行,非常easy提示找不到这个PID.Pause,就是那句"请按随意键继续….".

@echo off
echo 关闭SqlServer的进程
rem SQL Full Texthost
taskkill /f /imfdhost.exe
rem SQL Full-textFilter Daemon Launch Service
rem taskkill /im fdlauncher.exe
taskkill/f /im 1664
rem SQL Server VSSWriter
taskkill/f /im sqlwriter.exe
rem  SQL Server Windows NT
taskkill /f /imsqlservr.exe
rem SQL ServerIntegration Services  Service
taskkill /f /imMsdtsSrvr.exe
Pause


效果就是例如以下,由于运行了多次,所以非常多进程已经被结束掉了,所以提示找不到进程.



还有就是选择语句,假设在公司是运行这段,在家里是运行这段.set
/pvar = ,表示须要在命令窗体输入值,输入的值就赋给var,如输入1,则var为1;所以以下推断%var%是否等于1,等于1就goto
home,等于2就goto company.对于取得变量var的值,必须用%var%.

@echo off
echo 1.home2.company
set /p var=
if %var% equ 1 gotohome
if %var% equ 2 gotocompany

:home
上面那段代码

:company
rem***
Pause


执行效果就是这样,中间的代码省了,省的写的反复.



还有比較经常使用的就是打开目录的语句,使用开启命令,start文件路径.非常easy的,例如以下,就能打开E盘下的批处理目录.

Start E:\批处理
Pause


除了打开目录的语句,就是复制粘贴的语句用的最多.详细须要做的就是,如将D盘下的目录abc(都叫这个名),备份到F盘的备份下.备份要做的就是将abc放在一个新建的目录下,这个目录一定要依据日期命名,如20140730abc).语句例如以下

因为D:\abc和F:\备份都是已经存在的,所以须要新建,不想手动新建也能够用md新建.

@echo off
rem 新建目录和文件
rem mdd:\abc\abcd
rem echo test>>d:\abc\test.txt
rem md f:\备份
rem 新建备份的文件,依据日期命名
set var=f:\备份\%date:~0,4%%date:~5,2%%date:~8,2%abc\abc
md %var%
rem 打开文件
Start d:\abc
Start %var%
rem 拷贝目录
xcopy /s /e /h  d:\abc %var%
Pause


从上到下依次说明,使用md能够新建目录,md
+ 路径,能够是相对路径,也能够是绝对路径;echo
test >>d:\abc\test.txt能够创建test.txt文件,而且写入往里写了test,>>表示不会覆盖,会往文本里接着加入.set设置变量var,把路径生成好,因为须要生成20140730这样的,所以将年月日依次取出,组合.%date:~0,4%,取出年;然后用start能够打开文件.最后就是xcopy的拷贝目录,xcopy
/s /e /h d:\abc %var%,从左到右读,拷贝d盘的abc文件夹到指定文件夹下.因为xcopy仅仅能将abc下的全部内容拷到f盘下,可是abc本身不会拷过去,所以新建的时候我将abc文件夹也创建进去了,这样d盘abc下的全部文件就会在f盘的abc下了,就相当于我把abc整个文件夹拷了过去./s表示复制文件夹中全部非空的文件夹和子文件夹,/e会把空文件夹也拷过去,/h会把隐藏文件和系统文件拷过去,还有/y,当文件存在的时候,能够直接覆盖不提示,可是我怕出错,万一直接覆盖错了怎么办?

所以还是没实用.

执行效果例如以下



以上就是我对批处理的简单应用,还算是比較有用的.可是这仅仅是简单的应用,还有非常多没有考虑到,比方我打开了目录是想查看,省的出错,可是打开的目录还要我一一关闭,有些麻烦.还有就是比方我的创建目录,假设今天一天要拷贝2次,那么第二个目录该怎样命名,这个会覆盖肯定不正确;还有我的操作事实上是远程操作的时候,有的时候是从我本地拷到远程,有的时候是从远程拷到我本地,还有的时候是从远程拷到远程,这个该怎样实现.呵呵,事实上我也不知道,假设我攻克了,会写下下一篇博客的.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: