zoukankan      html  css  js  c++  java
  • 批学习

            曾经的时候就认为批处理非常的奇妙,还借过一本批处理的小书来看,非常不幸的,没学下去,看没多久就看不下去了.来公司这段时间,常常干一些反复性的事,所以就想用批处理来完毕.可是吧,断断续续,看了非常长一段时间,好不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刚刚他的PID1664,下次就不一定是什么了.所以假设用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,var1;所以以下推断%var%是否等于1,等于1goto home,等于2goto 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:abcF:备份都是已经存在的,所以须要新建,不想手动新建也能够用md新建.      

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

            从上到下依次说明,使用md能够新建目录,md + 路径,能够是相对路径,也能够是绝对路径;echo test >>d:abc est.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文件夹也创建进去了,这样dabc下的全部文件就会在f盘的abc下了,就相当于我把abc整个文件夹拷了过去./s表示复制文件夹中全部非空的文件夹和子文件夹,/e会把空文件夹也拷过去,/h会把隐藏文件和系统文件拷过去,还有/y,当文件存在的时候,能够直接覆盖不提示,可是我怕出错,万一直接覆盖错了怎么办?

    所以还是没实用.

             执行效果例如以下


            以上就是我对批处理的简单应用,还算是比較有用的.可是这仅仅是简单的应用,还有非常多没有考虑到,比方我打开了目录是想查看,省的出错,可是打开的目录还要我一一关闭,有些麻烦.还有就是比方我的创建目录,假设今天一天要拷贝2,那么第二个目录该怎样命名,这个会覆盖肯定不正确;还有我的操作事实上是远程操作的时候,有的时候是从我本地拷到远程,有的时候是从远程拷到我本地,还有的时候是从远程拷到远程,这个该怎样实现.呵呵,事实上我也不知道,假设我攻克了,会写下下一篇博客的.

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    CUDA C Best Practices Guide 在线教程学习笔记 Part 1
    0_Simple__simpleCallback
    0_Simple__simpleAtomicIntrinsics + 0_Simple__simpleAtomicIntrinsics_nvrtc
    0_Simple__simpleAssert + 0_Simple__simpleAssert_nvrtc
    0_Simple__matrixMulDrv
    0_Simple__matrixMulCUBLAS
    0_Simple__matrixMul + 0_Simple__matrixMul_nvrtc
    0_Simple__inlinePTX + 0_Simple__inlinePTX_nvrtc
    0_Simple__fp16ScalarProduct
    0_Simple__cudaOpenMP
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4843646.html
Copyright © 2011-2022 走看看