进程列表

查看运行进程列表

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

语法

  [plaintext]
1
2
TASKLIST [/S 系统 [/U 用户名 [/P [密码]]]] [/M [模块] | /SVC | /V] [/FI 过滤器] [/FO 格式] [/NH]

下面是可以用于TASKLIST命令的选项的描述。

示例

  [plaintext]
1
TASKLIST

上述命令将获取在您的本地系统上运行的所有进程列表。以下是在运行上述命令时生成的输出快照。

正如您从以下输出中所看到的,您不仅会获得系统上运行的各种进程,还会获得每个进程的内存使用情况。

  [plaintext]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System Idle Process 0 Services 0 4 K System 4 Services 0 272 K smss.exe 344 Services 0 1,040 K csrss.exe 528 Services 0 3,892 K csrss.exe 612 Console 1 41,788 K wininit.exe 620 Services 0 3,528 K winlogon.exe 648 Console 1 5,884 K services.exe 712 Services 0 6,224 K lsass.exe 720 Services 0 9,712 K svchost.exe 788 Services 0 10,048 K svchost.exe 832 Services 0 7,696 K dwm.exe 916 Console 1 117,440 K nvvsvc.exe 932 Services 0 6,692 K nvxdsync.exe 968 Console 1 16,328 K nvvsvc.exe 976 Console 1 12,756 K svchost.exe 1012 Services 0 21,648 K svchost.exe 236 Services 0 33,864 K svchost.exe 480 Services 0 11,152 K svchost.exe 1028 Services 0 11,104 K svchost.exe 1048 Services 0 16,108 K wlanext.exe 1220 Services 0 12,560 K conhost.exe 1228 Services 0 2,588 K svchost.exe 1276 Services 0 13,888 K svchost.exe 1420 Services 0 13,488 K spoolsv.exe 1556 Services 0 9,340 K

保存进程列表到文件

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

查找内存使用超过40MB的进程

  [plaintext]
1
tasklist /fi "memusage gt 40000"

上述命令将仅获取内存大于40MB的进程。以下是可能生成的示例输出。

  [plaintext]
1
2
3
4
5
6
7
8
9
10
11
12
Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ dwm.exe 916 Console 1 127,912 K explorer.exe 2904 Console 1 125,868 K ServerManager.exe 1836 Console 1 59,796 K WINWORD.EXE 2456 Console 1 144,504 K chrome.exe 4892 Console 1 123,232 K chrome.exe 4976 Console 1 69,412 K chrome.exe 1724 Console 1 76,416 K chrome.exe 3992 Console 1 56,156 K chrome.exe 1168 Console 1 233,628 K chrome.exe 816 Console 1 66,808 K

结束特定进程

允许在运行Microsoft Windows XP专业版、Windows 2003或更高版本的用户通过进程ID(PID)或映像名称从Windows命令行终止任务。用于此目的的命令是TASKKILL命令。

语法

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

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

示例

  [plaintext]
1
taskkill /f /im notepad.exe

上述命令会终止打开的记事本任务(如果有打开的话)。

  [plaintext]
1
taskill /pid 9214

上述命令将终止具有进程ID为9214的进程。

启动新进程

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

语法

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

其中:

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

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

示例

  [plaintext]
1
START "Test Batch Script" /Min test.bat

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

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

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

chat

详细介绍一下 bat 脚本 process

在批处理(Batch)脚本中,”process”一词可以有几种不同的含义,具体取决于上下文。

以下是几种可能的解释:

1. 执行命令或程序的过程

批处理脚本主要用于自动化命令行任务,因此“process”可以简单指执行一系列命令或程序的过程。

示例

  [bat]
1
2
3
4
5
@echo off echo Starting the process... rem 执行一系列命令 dir C:\Users echo Process completed.

2. 后台进程

在批处理中,可以使用 start 命令来启动一个后台进程,这在需要异步执行任务时非常有用。

示例

  [bat]
1
2
3
4
@echo off echo Launching a background process... start "" "C:\Program Files\MyApp\myapp.exe" echo Background process started.

3. 批处理脚本作为进程

批处理脚本本身作为一个进程在Windows操作系统中运行。可以使用任务管理器查看批处理脚本的进程信息。

4. 处理输入/输出

批处理脚本可以执行一些基本的输入/输出处理,例如:

  • 使用 echo 命令输出文本。
  • 使用 set 命令设置或修改环境变量。
  • 使用 gotocall 命令控制流程。
  • 使用管道 (|) 将一个命令的输出作为另一个命令的输入。

示例

  [bat]
1
2
3
@echo off set /p input="Enter something: " echo You entered: %input%

5. 处理错误和退出代码

批处理脚本可以检查命令的退出代码(errorlevel),以确定命令是否成功执行,并据此做出决策。

示例

  [bat]
1
2
3
4
5
6
7
@echo off net stop "My Service" >nul if %errorlevel% equ 0 ( echo Service stopped successfully. ) else ( echo Failed to stop service. )

6. 处理命令行参数

批处理脚本可以接受命令行参数,并在脚本中使用这些参数。

示例

  [bat]
1
2
3
4
5
6
@echo off if "%1"=="" ( echo Usage: %0 parameter ) else ( echo You provided the parameter: %1 )

7. 批处理脚本的进程控制

批处理脚本可以使用Windows命令来控制进程,如:

  • tasklist:列出所有进程。
  • taskkill:结束进程。

示例

  [bat]
1
2
3
4
5
6
7
8
@echo off tasklist /FI "IMAGENAME eq myapp.exe" if %errorlevel% equ 0 ( echo Process is running, terminating... taskkill /IM myapp.exe /F ) else ( echo Process is not running. )

注意事项

  • 批处理脚本通常用于自动化和简化命令行任务,但它们在处理复杂逻辑和数据结构方面有限。
  • 批处理脚本的执行是同步的,除非使用特定的命令或技术(如 start)来创建异步进程。
  • 批处理脚本的“进程”概念与编程语言中的函数或方法不同,它们更多地是一系列命令的顺序执行。

批处理脚本在Windows系统中是一种强大的自动化工具,尽管它们在功能上受到一些限制,但对于许多基本任务来说,它们提供了一种简单且高效的方式来自动化命令行操作。

参考资料

https://www.tutorialspoint.com/batch_script/batch_script_process.htm