zoukankan      html  css  js  c++  java
  • doc下批处理文件的感想

      这段时间忙着为我们的爬虫程序做一个守护进程,想来想去还是用脚本比较好,所以用了点时间仔细的研究了一下,这里有一点点经验想分享给大家,也不能说是经验了,只能说是我写这个的时候所用到的知识:

      1.tasklist 列出所有的进程,包括进程名称,进程的pid,属于哪一类的会话(0表示系统级的进程1表示用户级的进程)
    使用格式:
    Tasklist [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]
    参数含义:
    /S system 指定连接到的远程系统。
    /U [domain]user 指定使用哪个用户执行这个命令。
    /P [password] 为指定的用户指定密码。
    /M [module] 列出调用指定的DLL模块的所有进程。如果没有指定模块名,显示每个进程加载的所有模块。
    /SVC 显示每个进程中的服务。
    /V 显示详细信息。
    /FI filter 显示一系列符合筛选器指定的进程
    /FO format 指定输出格式,有效值:TABLE、LIST、CSV。
    /NH 指定输出中不显示栏目标题。只对TABLE和CSV格式有效。
     
      2.taskkill命令
    TASKKILL [/S system [/U username [/P [password]]]]
             { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]
    参数含义:
      /S    system           指定要连接的远程系统。
     
      /U    [domain]user    指定应该在哪个用户上下文执行这个命令。
     
      /P    [password]       为提供的用户上下文指定密码。如果忽略,提示
                             输入。
     
      /FI   filter           应用筛选器以选择一组任务。
                             允许使用 "*"。例如,映像名称 eq acme*
     
      /PID  processid        指定要终止的进程的 PID。
                             使用 TaskList 取得 PID。
     
      /IM   imagename        指定要终止的进程的映像名称。通配符 '*'可用来
                             指定所有任务或映像名称。
     
      /T                     终止指定的进程和由它启用的子进程。
     
      /F                     指定强制终止进程。
     
      /?                     显示帮助消息。
     
    set命令:
      显示、设置或删除 cmd.exe 环境变量。
     
    SET [variable=[string]]
     
      variable  指定环境变量名。
      string    指定要指派给变量的一系列字符串。
     
    要显示当前环境变量,键入不带参数的 SET。
     
    如果命令扩展被启用,SET 会如下改变:
     
    可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配
    SET 命令已使用的名称的所有变量的值。例如:
    SET P会显示所有以字母 P 打头的变量
    如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL设置成 1。
    SET 命令不允许变量名含有等号。....
    在这列就不一一列举了,可以在doc下 set /? 命令来获取帮助
    但是要注意的是set所设置的的是环境变量,前提是环境变量中有这个变量才能给其赋值或者是修改它的值。
    比如说set str = 123; 
    但是如何取到这个值那,可以这样做,%str%
    但是想要把中间产生的结果给环境变量,比如说:
    tasklist | find "cmd.exe">str 这样写看上去好像是正确的,其实不然
    批处理是不允许这样做的,目前我的解决办法是先定位到一个文件,然后在从文件定位给环境变量;
    tasklist | find "cmd.exe">l1.txt;
    str =
    这样做就可以完成对变量的赋值了;
    下面我说一下关于批处理文件多线程的问题:
    其实批处理文件是不支持多线程的,为了应付特殊的需要,我们可以构建一种叫做伪多线程的结构:
    定义一个比处理文件叫做st1.bat,然后在定义一个st2.bat
    如果我们想让st1.bat与st2.bat同时运行我们应该怎么做那,我们可以这样做:
    在st1.bat中写上这样的一句话:
    start st2.bat 然后启动st1.bat 你就会发现st1.bat和st2.bat同时运行了。
    另外我在说一下扩展名为.vbe的文件,这个文件的作用是隐藏doc窗口
    格式是这样的:
    set ws=wscript.createobject("wscript.shell")
    ws.run "D:weibostart.bat /start",0
    好了,以后有机会在分享
  • 相关阅读:
    对象布局已知时 C++ 对象指针的转换时地址调整
    采用栈数据结构的二叉树非递归遍历
    ZOJ 3481. Expand Tab
    “金山杯2007逆向分析挑战赛”第一阶段第二题
    “金山杯2007逆向分析挑战赛”第一阶段第一题分析
    对《神奇的C语言》文中例子 5 代码的分析讨论
    对"QQGame-大家来找茬"的辅助工具的改进
    memset 的实现分析
    ZOJ 1958. Friends
    HBase中MVCC的实现机制及应用情况
  • 原文地址:https://www.cnblogs.com/wq920/p/3275853.html
Copyright © 2011-2022 走看看