《Batch File Programming》读书笔记(二)

来源:互联网 发布:艾瑞网数据 编辑:程序博客网 时间:2024/06/08 01:19

《Batch File Programming》读书笔记(二)

这次我发现在cmd里面敲/?太好用了,忍不住偷懒把内容复制过来了

  • Batch File Programming读书笔记二
    • tasklist
    • taskkill
    • 几个小命令labeltreevertypeshiftpause
    • convert
    • 杀器shutdown
    • 计划任务用schtasks
    • 环境变量相关set
    • 循环用for

tasklist

tasklist            显示所有进程和它们的进程ID,会话名,会话,内存占用,接下来介绍它的子指令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 显示应用商店应用及其关联的进程。   /V                      显示详细任务信息。   /FI    filter           显示一系列符合筛选器                           指定条件的任务。   /FO    format           指定输出格式。                           有效值: "TABLE""LIST""CSV"。   /NH                     指定列标题不应该                           在输出中显示。                           只对 "TABLE""CSV" 格式有效。   /?                      显示此帮助消息。筛选器:    筛选器名称     有效运算符           有效值    -----------     ---------------           --------------------------    STATUS          eq, ne                    RUNNING | SUSPENDED                                              NOT 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"操作符:    Eq equals    Ne Not Equals    Gt Greater than    Lt Lesser than    Ge Greater than and equals    Le lesser than and equals

taskkill

taskkill                  杀进程的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 | UNKNOWN    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*"

几个小命令(label/tree/ver/type/shift/pause)

label                       创建、更改或删除磁盘的卷标。LABEL [drive:][label]LABEL [/MP] [volume] [label]  drive:          指定驱动器号。  label           指定卷标。  /MP             指定卷应被视为装入点或卷名。  volume          指定驱动器号(后面跟一个冒号)、装入点或卷名。                  如果指定了卷名,/MP 标志则不必要。
tree                        显示当前目录的树状结构图TREE [drive:][path] [/F] [/A]   /F   显示每个文件夹中文件的名称。   /A   使用 ASCII 字符,而不使用扩展字符。ver                         查看windows版本type                        显示文本文件内容shift                       更改批处理文件中可替换参数的位置。SHIFT [/n]如果命令扩展被启用,SHIFT 命令支持/n 命令行开关;该命令行开关告诉命令从第 n 个参数开始移位;n 介于零和八之间。例如:    SHIFT /2会将 %3 移位到 %2,将 %4 移位到 %3,等等;并且不影响 %0 和 %1。移位后被覆盖就没了。pause                       暂停批处理程序,并显示以下消息:    请按任意键继续. . .

convert

convert                     >convert /?将 FAT 卷转换为 NTFSCONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X]  volume      指定驱动器号(后面跟一个冒号)、装入点或卷名。  /FS:NTFS    指定要将此卷转换为 NTFS。  /V          指定将在详细模式下运行 Convert。  /CvtArea:filename              指定根目录中的一个连续文件,该文件              将是 NTFS 系统文件的占位符。  /NoSecurity 指定所有用户均可以访问              转换文件和目录的安全设置。  /X          如果必要,请先强制卸除卷。              该卷的所有打开句柄将会无效。

杀器shutdown

shutdown                    关机、注销重启用用法: shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f]    [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]    没有参数   显示帮助。这与键入 /? 是一样的。    /?         显示帮助。这与不键入任何选项是一样的。    /i         显示图形用户界面(GUI)。               这必须是第一个选项。    /l         注销。这不能与 /m 或 /d 选项一起使用。    /s         关闭计算机。    /r         完全关闭并重新启动计算机。    /g         完全关闭并重新启动计算机。在重新启动系统后,               重新启动任何注册的应用程序。    /a         中止系统关闭。               这只能在超时期间使用。               与 /fw 结合使用,以清除任何未完成的至固件的引导。    /p         关闭本地计算机,没有超时或警告。               可以与 /d 和 /f 选项一起使用。    /h         休眠本地计算机。               可以与 /f 选项一起使用。    /hybrid    执行计算机关闭并进行准备以快速启动。               必须与 /s 选项一起使用。    /fw        与关闭选项结合使用,使下次启动转到               固件用户界面。    /e         记录计算机意外关闭的原因。    /o         转到高级启动选项菜单并重新启动计算机。               必须与 /r 选项一起使用。    /m \\computer 指定目标计算机。    /t xxx     将关闭前的超时时间设置为 xxx 秒。               有效范围是 0-315360000 (10 年),默认值为 30。               如果超时时间大于 0,则默示为               /f 参数。    /c "comment" 有关重新启动或关闭的原因的注释。               最多允许 512 个字符。    /f         强制关闭正在运行的应用程序而不事先警告用户。               如果为 /t 参数指定大于 0 的值,               则默示为 /f 参数。    /d [p|u:]xx:yy  提供重新启动或关闭的原因。               p 指示重新启动或关闭是计划内的。               u 指示原因是用户定义的。               如果未指定 p 也未指定 u,则重新启动或关闭               是计划外的。               xx 是主要原因编号(小于 256 的正整数)。               yy 是次要原因编号(小于 65536 的正整数)。此计算机上的原因:(E = 预期 U = 意外 P = 计划内,C = 自定义)类别    主要    次要    标题 U      0       0       其他(计划外)E       0       0       其他(计划外)E P     0       0       其他(计划内) U      0       5       其他故障: 系统没有反应E       1       1       硬件: 维护(计划外)E P     1       1       硬件: 维护(计划内)E       1       2       硬件: 安装(计划外)E P     1       2       硬件: 安装(计划内)E       2       2       操作系统: 恢复(计划外)E P     2       2       操作系统: 恢复(计划内)  P     2       3       操作系统: 升级(计划内)E       2       4       操作系统: 重新配置(计划外)E P     2       4       操作系统: 重新配置(计划内)  P     2       16      操作系统: Service Pack (计划内)        2       17      操作系统: 热修补(计划外)  P     2       17      操作系统: 热修补(计划内)        2       18      操作系统: 安全修补(计划外)  P     2       18      操作系统: 安全修补(计划内)E       4       1       应用程序: 维护(计划外)E P     4       1       应用程序: 维护(计划内)E P     4       2       应用程序: 安装(计划内)E       4       5       应用程序: 没有反应E       4       6       应用程序: 不稳定 U      5       15      系统故障: 停止错误 U      5       19      安全问题(计划外)E       5       19      安全问题(计划外)E P     5       19      安全问题(计划内)E       5       20      网络连接丢失(计划外) U      6       11      电源故障: 电线被拔掉 U      6       12      电源故障: 环境  P     7       0       旧版 API 关机

计划任务用schtasks

at命令在win10里已经废弃了,采用schtasks作为替代SCHTASKS /parameter [arguments]描述:    允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任    务。参数列表:    /Create         创建新计划任务。    /Delete         删除计划任务。    /Query          显示所有计划任务。    /Change         更改计划任务属性。    /Run            按需运行计划任务。    /End            中止当前正在运行的计划任务。    /ShowSid        显示与计划的任务名称相应的安全标识符。    /?              显示此帮助消息。Examples:    SCHTASKS    SCHTASKS /?    SCHTASKS /Run /?    SCHTASKS /End /?    SCHTASKS /Create /?    SCHTASKS /Delete /?    SCHTASKS /Query  /?    SCHTASKS /Change /?    SCHTASKS /ShowSid /?

环境变量相关set

set /?显示、设置或删除 cmd.exe 环境变量。SET [variable=[string]]  variable  指定环境变量名。  string    指定要指派给变量的一系列字符串。要显示当前环境变量,键入不带参数的 SET。如果命令扩展被启用,SET 会如下改变:可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配SET 命令已使用的名称的所有变量的值。例如:    SET P会显示所有以字母 P 打头的变量如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL设置成 1SET 命令不允许变量名含有等号。在 SET 命令中添加了两个新命令行开关:    SET /A expression    SET /P variable=[promptString]/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序支持下列操作:    ()                  - 分组    ! ~ -               - 一元运算符    * / %               - 算数运算符    + -                 - 算数运算符    << >>               - 逻辑移位    &                   - 按位“与”    ^                   - 按位“异”    |                   - 按位“或”    = *= /= %= += -=    - 赋值      &= ^= |= <<= >>=    ,                   - 表达式分隔符如果你使用任何逻辑或取余操作符, 你需要将表达式字符串用引号扩起来。在表达式中的任何非数字字符串键作为环境变量名称,这些环境变量名称的值已在使用前转换成数字。如果指定了一个环境变量名称,但未在当前环境中定义,那么值将被定为零。这使你可以使用环境变量值做计算而不用键入那些 % 符号来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值。该分配的操作符在分配的操作符左边需要一个环境变量名称。除十六进制有 0x 前缀,八进制有 0 前缀的,数字值为十进位数字。因此,0x12 与 18022相同。请注意八进制公式可能很容易搞混: 0809 是无效的数字,因为 89 不是有效的八进制位数。(& )/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。环境变量替换已如下增强:    %PATH:str1=str2%会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的开始到 str1 剩余部分第一次出现的地方,都一直保持相配。也可以为扩展名指定子字符串。    %PATH:~10,5%会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏移量 10)字符开始的五个字符。如果没有指定长度,则采用默认值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,使用的数字则是环境变量数值长度加上指定的偏移量或长度。    %PATH:~-10%会提取 PATH 变量的最后十个字符。    %PATH:~0,-2%会提取 PATH 变量的所有字符,除了最后两个。终于添加了延迟环境变量扩充的支持。该支持总是按默认值被停用,但也可以通过 CMD.EXE 的 /V 命令行开关而被启用/停用。请参阅 CMD /?考虑到读取一行文本时所遇到的目前扩充的限制时,延迟环境变量扩充是很有用的,而不是执行的时候。以下例子说明直接变量扩充的问题:    set VAR=before    if "%VAR%" == "before" (        set VAR=after        if "%VAR%" == "after" @echo If you see this, it worked    )不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和"after",这两者永远不会相等。同样,以下这个例子也不会达到预期效果:    set LIST=    for %i in (*) do set LIST=%LIST% %i    echo %LIST%原因是,它不会在目前的目录中建立一个文件列表,而只是将LIST 变量设成找到的最后一个文件。这也是因为 %LIST%FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量是空的。因此,我们真正执行的 FOR 循环是:    for %i in (*) do set LIST= %i这个循环继续将 LIST 设成找到的最后一个文件。延迟环境变量扩充允许你使用一个不同的字符(惊叹号)在执行时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面例子写成以下所示,以达到预期效果:    set VAR=before    if "%VAR%" == "before" (        set VAR=after        if "!VAR!" == "after" @echo If you see this, it worked    )    set LIST=    for %i in (*) do set LIST=!LIST! %i    echo %LIST%如果命令扩展被启用,有几个动态环境变量可以被扩展,但不会出现在 SET 显示的变量列表中。每次变量数值被扩展时,这些变量数值都会被动态计算。如果用户用这些名称中任何一个明确定义变量,那个定义会替代下面描述的动态定义:%CD% - 扩展到当前目录字符串。%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。%RANDOM% - 扩展到 032767 之间的任意十进制数字。%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。%CMDEXTVERSION% - 扩展到当前命令处理器扩展版本号。%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。%HIGHESTNUMANODENUMBER% - 扩展到此计算机上的最高 NUMA 节点号。

循环用for

for /?对一组文件中的每一个文件执行某个特定命令。FOR %variable IN (set) DO command [command-parameters]  %variable  指定一个单一字母可替换的参数。  (set)      指定一个或一组文件。可以使用通配符。  command    指定对每个文件执行的命令。  command-parameters             为特定命令指定参数或命令行开关。在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.如果启用命令扩展,则会支持下列 FOR 命令的其他格式:FOR /D %variable IN (set) DO command [command-parameters]    如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]    检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。    如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,    则枚举该目录树。FOR /L %variable IN (start,step,end) DO command [command-parameters]    该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列    1 2 3 4 5,(5,-1,1)将产生序列(5 4 3 2 1)FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]FOR /F ["options"] %variable IN ("string") DO command [command-parameters]FOR /F ["options"] %variable IN ('command') DO command [command-parameters]    或者,如果有 usebackq 选项:FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]FOR /F ["options"] %variable IN ("string") DO command [command-parameters]FOR /F ["options"] %variable IN ('command') DO command [command-parameters]    fileset 为一个或多个文件名。继续到 fileset 中的下一个文件之前,    每份文件都被打开、读取并经过处理。处理包括读取文件,将其分成一行行的文字,    然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 For 循环。    以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白行。    你可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个    或多个指定不同解析选项的关键字。这些关键字为:        eol=c           - 指一个行注释字符的结尾(就一个)        skip=n          - 指在文件开始时忽略的行数。        delims=xxx      - 指分隔符集。这个替换了空格和制表符的                          默认分隔符集。        tokens=x,y,m-n  - 指每行的哪一个符号被传递到每个迭代                          的 for 本身。这会导致额外变量名称的分配。m-n                          格式为一个范围。通过 nth 符号指定 mth。如果                          符号字符串中的最后一个字符星号,                          那么额外的变量将在最后一个符号解析之后                          分配并接受行的保留文本。        usebackq        - 指定新语法已在下类情况中使用:                          在作为命令执行一个后引号的字符串并且一个单                          引号字符为文字字符串命令并允许在 file-set                          中使用双引号扩起文件名称。    某些范例可能有助:FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k    会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将    每行中的第二个和第三个符号传递给 for 函数体,用逗号和/或    空格分隔符号。请注意,此 for 函数体的语句引用 %i 来    获得第二个符号,引用 %j 来获得第三个符号,引用 %k    来获得第三个符号后的所有剩余符号。对于带有空格的文件    名,你需要用双引号将文件名括起来。为了用这种方式来使    用双引号,还需要使用 usebackq 选项,否则,双引号会    被理解成是用作定义某个要分析的字符串的。    %i 在 for 语句中显式声明,%j 和 %k 是通过    tokens= 选项隐式声明的。可以通过 tokens= 一行    指定最多 26 个符号,只要不试图声明一个高于字母 "z""Z" 的变量。请记住,FOR 变量是单一字母、分大小写和全局的变量;    而且,不能同时使用超过 52 个。    还可以在相邻字符串上使用 FOR /F 分析逻辑,方法是,    用单引号将括号之间的 file-set 括起来。这样,该字符    串会被当作一个文件中的一个单一输入行进行解析。    最后,可以用 FOR /F 命令来分析命令的输出。方法是,将    括号之间的 file-set 变成一个反括字符串。该字符串会    被当作命令行,传递到一个子 CMD.EXE,其输出会被捕获到    内存中,并被当作文件分析。如以下例子所示:      FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i    会枚举当前环境中的环境变量名称。另外,FOR 变量参照的替换已被增强。你现在可以使用下列选项语法:     %~I          - 删除任何引号("),扩展 %I     %~fI        - 将 %I 扩展到一个完全合格的路径名     %~dI        - 仅将 %I 扩展到一个驱动器号     %~pI        - 仅将 %I 扩展到一个路径     %~nI        - 仅将 %I 扩展到一个文件名     %~xI        - 仅将 %I 扩展到一个文件扩展名     %~sI        - 扩展的路径只含有短名     %~aI        - 将 %I 扩展到文件的文件属性     %~tI        - 将 %I 扩展到文件的日期/时间     %~zI        - 将 %I 扩展到文件的大小     %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩展                   到找到的第一个完全合格的名称。如果环境变量名                   未被定义,或者没有找到文件,此组合键会扩展到                   空字符串可以组合修饰符来得到多重结果:     %~dpI       - 仅将 %I 扩展到一个驱动器号和路径     %~nxI       - 仅将 %I 扩展到一个文件名和扩展名     %~fsI       - 仅将 %I 扩展到一个带有短名的完整路径名     %~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展                   到找到的第一个驱动器号和路径。     %~ftzaI     - 将 %I 扩展到类似输出线路的 DIR在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆。
原创粉丝点击