发布时间:2024-04-15 文章来源:深度系统下载 浏览:
在某些场合,我们会有这样的想法,在程序中启动cmd.exe,并且让它执行一命令. 例如想让cmd.exe执行taskkill. 前者很好实现,就是调用类似于CreateProcess的API, 要实现后者我们可能会想到将命令taskkill加到参数中不就可以了吗? 但是这是不可以的(添加参数的方法要稍作改动也可以
批处理, 实际上windows为我们提供的一个脚本处理方案. 我们可以将所要执行的脚本都一次写入以bat为后缀的文本文件中, 我们只要去执行这个批处理, 里面的脚本就可以执行.
基于这个思路, 我们将我们的命令放在批处理文件中, 那么我们所举的这个例子就可以taskkill放在bat文件中即可. 这样我们的问题得以解决.
接下来我们看看taskkill这个命令,这个命令的作用是结束一个进程.后面的参数会随需而变, 参数就是想要结束的进程进程名, 可以简单的将进程的名字写在批处理里面, 象这样: taskkill /im winword.exe 这样当我们执行这个批处理的时候,就可以结束微软的word字处理程序. 但是这样缺少灵活性, 结束不同进程需要重新编辑这个批处理. 因此我们这里的winword.exe,也就是进程名通过比处理参数的名字传进来.象这样: taskkill /im %1 这里的就是传给批处理的第一个参数. 我们做了这些工作,接下来我们想结束word进程可以这样,执行我们写的批处理,参数是winword.exe
到这里可能有人问,你这样做, 要结束进程名不得在程序写死了, 不不不, 千万不要这么做, 这个参数得让用户自己去选择. 还有人会说, 你用类似TerminateProcess不就可以解决这个问题, 我想说的解决问题的办法有很多中, 只要选择最适合你的就好. 在我的应用场景中, 这个方案就是我的最佳, 因为我遇到的情形恰好是不能改动源码的.
写到这里应该结束了, 等等.
还有个问题没有解释清楚, 就是上面标注的部分, 如果我们把添加参数的方法改动一二就可以. 我们不是简单象这样, cmd.exe taskkill /im winword.exe 而是多加一个参数/c或者/k, 具体这两个参数的意义请在命令窗口中输入cmd /?查看. 我们改为: cmd.exe /c /taskkill /im winword.exe
另外我们可以把要接受的进程可以放在一个文本文件中(.txt), 一行一个进程名. 让后在批处理里面用for语句进行分析. |
上一篇: