批处理进程

批处理进程

在本章中,我们将讨论批处理脚本中涉及的各种进程。

1. 查看正在运行的进程列表

在批处理脚本中,可以使用TASKLIST命令来获取系统中当前正在运行的进程的列表。

语法

TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter]
[/FO format] [/NH]

以下是TASKLIST命令的选项的说明。

  • /S system - 指定要连接的远程系统。
  • /U [domain]user - 指定命令应在其下执行的用户上下文。
  • /P [password] - 指定给定用户上下文的密码。 提示输入,如果省略。
  • /M [module] - 列出当前使用给定的exe / dll名称的所有任务。 如果未指定模块名称,则显示所有已加载的模块。
  • /SVC - 显示每个进程中托管的服务。
  • /V - 显示详细的任务信息。
  • /FI filter - 显示一组符合过滤器指定条件的任务。
  • /FO format - 指定输出格式。 有效值:TABLELISTCSV
  • /NH - 指定“列标题”不应显示在输出中。 仅适用于TABLECSV格式。

示例

TASKLIST

以上命令将获得本地系统上运行的所有进程的列表。 以下是当上面的命令按原样运行时所呈现的输出的快照。 正如你从下面的输出中看到的,不仅可以获得系统上运行的各种进程,还可以获得每个进程的内存使用情况。

映像名称                       PID 会话名              会话#       内存使用 
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0          8 K
System                           4 Services                   0        136 K
smss.exe                       396 Services                   0        936 K
csrss.exe                      568 Services                   0      4,524 K
wininit.exe                    656 Services                   0      5,328 K
csrss.exe                      668 Console                    1      4,884 K
winlogon.exe                   764 Console                    1      8,060 K
services.exe                   884 Services                   0      9,320 K
lsass.exe                      892 Services                   0     13,112 K
...... 进程太多了,此处省略部分~
svchost.exe                  12092 Services                   0     20,284 K
svchost.exe                  10536 Services                   0      9,520 K
chrome.exe                   11416 Console                    1    212,284 K
chrome.exe                    4564 Console                    1     10,520 K
chrome.exe                    9824 Console                    1     10,320 K
chrome.exe                   11984 Console                    1     98,216 K
chrome.exe                   12080 Console                    1     23,632 K
svchost.exe                  10920 Services                   0      8,608 K
svchost.exe                   1656 Services                   0      6,948 K
tasklist.exe                  2456 Console                    1      8,044 K

示例2

tasklist > process.txt

以上将tasklist命令的输出显示保存到process.txt文件中。

tasklist /fi "memusage gt 40000"

以上命令只能获取内存大于40MB的进程。 以下是示例的输出。

映像名称                       PID 会话名              会话#       内存使用
========================= ======== ================ =========== ============
svchost.exe                   1936 Services                   0     73,556 K
Memory Compression            2032 Services                   0    149,736 K
java.exe                      8944 Services                   0     62,328 K
explorer.exe                  9544 Console                    1    105,484 K
ShellExperienceHost.exe      10028 Console                    1     57,696 K
SearchUI.exe                 10160 Console                    1     64,624 K
chrome.exe                   11416 Console                    1    203,356 K
chrome.exe                   11984 Console                    1     97,624 K
chrome.exe                   11360 Console                    1    309,812 K
QQ.exe                       11672 Console                    1    182,020 K
WeChat.exe                    4952 Console                    1     58,820 K
chrome.exe                    1240 Console                    1     80,776 K
chrome.exe                   10280 Console                    1    133,196 K
chrome.exe                   10684 Console                    1    108,056 K
chrome.exe                    4644 Console                    1     48,396 K
chrome.exe                    2232 Console                    1     97,652 K

2. 杀死/终止一个进程

允许运行Microsoft Windows XP Professional,Windows 2003或更高版本的用户通过进程ID(PID)或映像名称从Windows命令行中终止任务。 杀死/终止一个进程的命令是TASKILL命令。

语法

TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] 
[/PID processid | /IM imagename] } [/T] [/F]

以下是TASKKILL命令的选项的描述。

  • /S system - 指定要连接的远程系统
  • /U [domain]user - 指定命令应在其下执行的用户上下文。
  • /P [password] - 指定给定用户上下文的密码。 提示输入,如果省略。
  • /FI FilterName - 应用过滤器来选择一组任务,允许使用*通配符。
  • /PID processID - 指定要终止的进程的PID。使用TaskList来获取PID。
  • /IM ImageName - 指定要终止的进程的映像名称。 通配符*可用于指定所有任务或图像名称。
  • /T - 终止指定的进程以及由其启动的任何子进程。
  • /F - 指定强制终止进程。

示例

taskkill /f /im notepad.exe

如果打开记事本,上面的命令杀死(终止)打开的记事本任务。

taskill /pid 9901

上面的命令杀死了一个ID为9901的进程。

3. 启动一个新的过程

DOS脚本也可以完全启动一个新的进程。这是通过使用START命令来实现的。

语法

START "title" [/D path] [options] "command" [parameters]

其中,

  • title - CMD窗口标题栏的文本(必需)
  • path - 起始目录。
  • command - 命令,批处理文件或可执行程序运行。
  • parameters - 传递给命令的参数。

以下是START命令的选项的描述。

  • /MIN - 启动窗口最小化。
  • /MAX - 启动窗口最大化。
  • /LOW - 使用IDLE优先级。
  • /NORMAL - 使用NORMAL优先级。
  • /ABOVENORMAL - 使用ABOVENORMAL优先级。
  • /BELOWNORMAL - 使用BELOWNORMAL优先级。
  • /HIGH - 使用HIGH优先级。
  • /REALTIME - 使用REALTIME优先级。

示例

START "Test Batch Script" /Min test.bat

上述命令将在新窗口中运行批处理脚本test.bat。 窗口将以最小化模式启动,并且指定标题为:“Test Batch Script”

START "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"

上述命令实际上将在另一个进程中运行Microsoft Word,然后在MS Word中打开文件TESTA.txt