,概况二句话:“不同进程不能传值”,“相同进程单向传值,老子传儿子,非儿子传老子”。
start/?(2019.04.27)
启动一个单独的窗口以运行指定的程序或命令。
START [“title”] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE ] [/AFFINITY ] [/WAIT] [/B]
[command/program] [parameters]
"title" 在窗口标题栏中显示的标题。
path 启动目录。
B 启动应用程序,但不创建新窗口。
应用程序已忽略 ^C 处理。除非应用程序
启用 ^C 处理,否则 ^Break 是唯一可以中断
该应用程序的方式。
I 新的环境将是传递
给 cmd.exe 的原始环境,而不是当前环境。
MIN 以最小化方式启动窗口。
MAX 以最大化方式启动窗口。
SEPARATE 在单独的内存空间中启动 16 位 Windows 程序。
SHARED 在共享内存空间中启动 16 位 Windows 程序。
LOW 在 IDLE 优先级类中启动应用程序。
NORMAL 在 NORMAL 优先级类中启动应用程序。
HIGH 在 HIGH 优先级类中启动应用程序。
REALTIME 在 REALTIME 优先级类中启动应用程序。
ABOVENORMAL 在 ABOVENORMAL 优先级类中启动应用程序。
BELOWNORMAL 在 BELOWNORMAL 优先级类中启动应用程序。
NODE 将首选非一致性内存结构(NUMA)节点指定为
十进制整数。
AFFINITY 将处理器关联掩码指定为十六进制数字。
进程被限制在这些处理器上运行。
将 /AFFINITY 和 /NODE 结合使用时,会对关联掩码
进行不同的解释。指定关联掩码,以便将零位作为起始位置(就如将 NUMA
节点的处理器掩码向右移位一样)。
进程被限制在指定关联掩码和 NUMA 节点之间的
那些通用处理器上运行。
如果没有通用处理器,则进程被限制在
指定的 NUMA 节点上运行。
WAIT 启动应用程序并等待它终止。
command/program
如果它是内部 cmd 命令或批文件,则
该命令处理器是使用 cmd.exe 的 /K 开关运行的。
这表示运行该命令之后,该窗口
将仍然存在。
如果它不是内部 cmd 命令或批文件,则
它就是一个程序,并将作为一个窗口化应用程序或
控制台应用程序运行。
parameters 这些是传递给 command/program 的参数。
注意: 在 64 位平台上不支持 SEPARATE 和 SHARED 选项。
通过指定 /NODE,可按照利用 NUMA 系统中的内存区域的方式创建进程。例如,可以创建两个完全
通过共享内存互相通信的进程以共享相同的首选 NUMA 节点,从而最大限度地减少内存延迟。只要有可能,它们就会分配来自相同 NUMA 节点的内存,并且会在指定节点之外的处理器上自由运行。
start /NODE 1 application1.exe
start /NODE 1 application2.exe
这两个进程可被进一步限制在相同 NUMA 节点内的指定处理器上运行。在以下示例中,application1 在节点的两个低位处理器上运行,而 application2在该节点的其后两个处理器上运行。该示例假定指定节点至少具有四个逻辑处理器。请注意,节点号可更改为该计算机的任何有效节点号,而无需更改关联掩码。
start /NODE 1 /AFFINITY 0x3 application1.exe
启动 /NODE 1 /AFFINITY 0xc application2.exe
如果命令扩展被启用,通过命令行或 START 命令的外部命令调用会如下改变:
将文件名作为命令键入,非可执行文件可以通过文件关联调用。(例如,WORD.DOC 会调用跟 .DOC 文件扩展名关联的应用程序)。关于如何从命令脚本内部创建这些关联,请参阅 ASSOC 和 FTYPE 命令。
执行的应用程序是 32 位 GUI 应用程序时,CMD.EXE 不等应用 程序终止就返回命令提示符。如果在命令脚本内执行,该新行为则不会发生。
如果执行的命令行的第一个符号是不带扩展名或路径修饰符的字符串 “CMD”,“CMD” 会被 COMSPEC 变量的数值所替换。这防止从当前目录提取 CMD.EXE。
如果执行的命令行的第一个符号没有扩展名,CMD.EXE 会使用PATHEXT 环境变量的数值来决定要以什么顺序寻找哪些扩展名。PATHEXT 变量的默认值是:
.COM;.EXE;.BAT;.CMD
请注意,该语法跟 PATH 变量的一样,分号隔开不同的元素。
查找可执行文件时,如果没有相配的扩展名,看一看该名称是否
与目录名相配。如果确实如此,START 会在那个路径上调用
Explorer。如果从命令行执行,则等同于对那个路径作 CD /D。
,“同一进程,变量互通”。
call/?(2019.04.27)
从批处理程序调用另一个批处理程序。
CALL [drive:][path]filename [batch-parameters]
batch-parameters 指定批处理程序所需的命令行信息。
如果命令扩展被启用,CALL 会如下改变:
CALL 命令现在将卷标当作 CALL 的目标接受。语法是:
CALL:label arguments
一个新的批文件上下文由指定的参数所创建,控制在卷标被指定后传递到语句。你必须通过达到批脚本文件末两次来 “exit” 两次。第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次
会退出批脚本。键入 GOTO /?,参看 GOTO :EOF 扩展的描述,此描述允许你从一个批脚本返回。
另外,批脚本文本参数参照(%0、%1、等等)已如下改变:
批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)
批参数(%n)的替代已被增强。你可以使用以下语法:
%~1 - 删除引号("),扩展 %1
%~f1 - 将 %1 扩展到一个完全合格的路径名
%~d1 - 仅将 %1 扩展到一个驱动器号
%~p1 - 仅将 %1 扩展到一个路径
%~n1 - 仅将 %1 扩展到一个文件名
%~x1 - 仅将 %1 扩展到一个文件扩展名
%~s1 - 扩展的路径只含有短名
%~a1 - 将 %1 扩展到文件属性
%~t1 - 将 %1 扩展到文件的日期/时间
%~z1 - 将 %1 扩展到文件的大小
%~$PATH:1 - 查找列在 PATH 环境变量的目录,并将 %1
扩展到找到的第一个完全合格的名称。如果
环境变量名未被定义,或者没有找到文件,
此修改符会扩展到空字符串
可以组合修改符来取得多重结果:
%~dp1 - 只将 %1 扩展到驱动器号和路径
%~nx1 - 只将 %1 扩展到文件名和扩展名
%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
并扩展到找到的第一个文件的驱动器号和路径。
%~ftza1 - 将 %1 扩展到类似 DIR 的输出行。
在上面的例子中,%1 和 PATH 可以被其他有效数值替换。
%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %* 使用
一是调用范围不同:call主要用来进行批处理的内部调用,如call :pend 和一些dos命令的调用如call set test=2,但也可以调用其他可执行文件,而start则不能进行内部调用,但其可以执行基本上所有的外部程序,还可以执行shell,如打开文件夹start “” “%WINDIR%”,安装网络打印机start “” "\IP\Printer"等等。
二是调用方式不同:call是严格意义上而言的调用,在call另一个批处理时是在同一窗体进程里执行,而start则是执行,所以在执行另外一个批处理时是在不同的窗体进程里进行,也就是说在新开启的进程里执行,虽然start可以加入b参数,但其结果却完全不同。如我们使用call set test=2 和 start /b set test=2 看似执行的结果相同,但是我们发现后者有两个进程,而且在窗体里要执行两次exit才能退出,所以当我们使用start来执行一个批处理后最好在被调用的批处理中也加一个exit,否则无法退出被调用的批处理的dos窗体,但是使用call调用时如果在被调用的批处理中存在exit则会直接结束原始和被调用的批处理程序,这是一个非常严重的问题。建议在被调用的批处理中使用goto :eof来取代exit。
三是调用结果不同:call调用不仅可以把参数或变量传给被调用的批处理,而且被调用的批处理也可以设置参数或变量以便回传,而start只能把参数或变量传给被调用的批处理,却不能回传参数或变量,这一点实际上是第二点的延伸。另外,我们还必须注意一点:使用call调用其他批处理时,在被调用的批处理中若我们使用goto命令的时候,建议要使用与原批处理中不同的标签名来跳转,否则可能会跳转到原批处理中而不能保证完整的执行被调用批处理中的所有语句。
taskkill/?(2019.04.28)
TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]
描述:
使用该工具按照进程 ID (PID) 或映像名称终止任务。
参数列表:
/S system 指定要连接的远程系统。
/U [domain\]user 指定应该在哪个用户上下文执行这个命令。
/P [password] 为提供的用户上下文指定密码。如果忽略,提示
输入。
/FI filter 应用筛选器以选择一组任务。
允许使用 "*"。例如,映像名称 eq acme*
/PID processid 指定要终止的进程的 PID。
使用 TaskList 取得 PID。
/IM imagename 指定要终止的进程的映像名称。通配符 '*'可用来
指定所有任务或映像名称。
/T 终止指定的进程和由它启用的子进程。
/F 指定强制终止进程。
/? 显示帮助消息。
筛选器:
筛选器名 | 有效运算符 | 有效值 |
---|---|---|
STATUS | eq, ne | RUNNING ,NOT RESPONDING |
IMAGENAME | eq, ne | 映像名称 |
PID | eq, ne, gt, lt, ge, le | PID 值 |
SESSION | eq, ne, gt, lt, ge, le | 会话编号。 |
CPUTIME | eq, ne, gt, lt, ge, le | CPU 时间,格式为hh:mm:ss。 hh - 时,mm - 分,ss - 秒 |
MEMUSAGE | eq, ne, gt, lt, ge, le | 内存使用量,单位为 KB |
USERNAME | eq, ne | 用户名,格式为 [domain]user |
MODULES | eq, ne | DLL 名称 |
SERVICES | eq, ne | 服务名称 |
WINDOWTITLE | eq, ne | 窗口标题 |
说明
----
1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 ‘*’。
2) 远程进程总是要强行 (/F) 终止。
3) 当指定远程机器时,不支持 “WINDOWTITLE” 和 “STATUS” 筛选器。
例如:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TASKKILL /S system /U 域\用户名 /FI "用户名 ne NT*" /IM *
TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
tasklist/?(2019.04.28)
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] 列出当前使用所给 exe/dll 名称的所有任务。
如果没有指定模块名称,显示所有加载的模块。
/SVC 显示每个进程中主持的服务。
/APPS 显示 Microsoft Store 应用及其关联的进程。
/V 显示详细任务信息。
/FI filter 显示一系列符合筛选器
指定条件的任务。
/FO format 指定输出格式。
有效值: "TABLE"、"LIST"、"CSV"。
/NH 指定列标题不应该在输出中显示。
只对 "TABLE" 和 "CSV" 格式有效。
/? 显示此帮助消息。
筛选器:
筛选器名称 | 有效运算符 | 有效值 |
---|---|---|
STATUS | eq, ne | RUNNING , SUSPENDEDNOT RESPONDING ,UNKNOWN |
IMAGENAME | eq, ne | 映像名称 |
PID | eq, ne, gt, lt, ge, le | PID 值 |
SESSION | eq, ne, gt, lt, ge, le | 会话编号 |
SESSIONNAME | eq, ne | 会话名称 |
CPUTIME | eq, ne, gt, lt, ge, le | CPU 时间,格式为hh:mm:ss。 hh - 小时,mm - 分钟,ss - 秒 |
MEMUSAGE | eq, ne, gt, lt, ge, le | 内存使用(以 KB 为单位) |
USERNAME | eq, ne | 用户名,格式为 [域]用户 |
SERVICES | eq, ne | 服务名称 |
WINDOWTITLE | eq, ne | 窗口标题 |
模块 | eq, ne | DLL 名称 |
注意: 当查询远程计算机时,不支持 “WINDOWTITLE” 和 “STATUS”
筛选器。
Examples:
TASKLIST//列出所有进程
TASKLIST /M
TASKLIST /V /FO CSV
TASKLIST /SVC /FO LIST
TASKLIST /APPS /FI "STATUS eq RUNNING"//显示应用商店应用及其关联的所有状态运行中的进程
TASKLIST /M wbem*
TASKLIST /S system /FO LIST
TASKLIST /S system /U 域\用户名 /FO CSV /NH
TASKLIST /S system /U username /P password /FO TABLE /NH
TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"
tasklist /fi “IMAGENAME eq aa.exe” //aa.exe 换成你要查找的进程的映像名称;
例如:查找QQ:
tasklist -fi "IMAGENAME eq QQ.exe"
部分参考:https://blog.csdn.net/sinat_34439107/article/details/79023866