[学习笔记]Windows CMD/bat

您所在的位置:网站首页 中国十大疑似穿越者是谁 [学习笔记]Windows CMD/bat

[学习笔记]Windows CMD/bat

#[学习笔记]Windows CMD/bat| 来源: 网络整理| 查看: 265

基础知识 命令帮助的符号解释 NotationDescriptionText without brackets or braces必须要输入的命令必须要提供值的占位符[Text inside square brackets]可选项{Text inside braces}必选项集合,必选其中一项Vertical bar (|)互斥项分隔符,必选其中一项Ellipsis (…)重复使用项 特殊字符的意义与作用 @ @其后接一条命令,在批处理中,以@作为前缀的命令不会回显 @ipconfig

在这里插入图片描述

ipconfig

在这里插入图片描述

在.bat和.cmd 文件中体现,当然一般批处理文件第一行

@echo off

就会预先关闭所有命令的回显。

%

变量引用:

echo %windir%

在这里插入图片描述

只有当%%中间为已定义的临时变量或全局(系统)变量时才会作为变量引用符号,否者在echo命令中将视作普通字串。

取模运算: 在set命令中启用\a选项将开启表达式选项

在这里插入图片描述

注意在命令行中单个%即可,在批处理中需要两个自身转义,即%%

在这里插入图片描述在这里插入图片描述

这里输出num的值为16的原因是该批处理未获得第五个参数,即空,故输出16,通过控制台调用传参示例:

在这里插入图片描述

这是变量引用一种特殊形式,%0表示批处理文件本身,1~9表示接收的参数索引。

转义%: 在批处理文件中转义本身,命令行中echo均视作普通字符 在这里插入图片描述

: 定义标签段: 该符号在行头定义标签段,:后即为标签段的标签名,如在test.cmd中 goto:third

直接跳过second而跳转到third执行。 在这里插入图片描述 set命令扩展-截取和替换

在这里插入图片描述

环境变量替换已如下增强: %PATH:str1=str2% 会扩展 PATH 环境变量,用 “str2” 代替扩展结果中的每个 “str1”。 要有效地从扩展结果中删除所有的 “str1”,“str2” 可以是空的。 “str1” 可以以星号打头;在这种情况下,“str1” 会从扩展结果的 开始到 str1 剩余部分第一次出现的地方,都一直保持相配。 也可以为扩展名指定子字符串。 %PATH:~10,5% 会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏 移量 10)字符开始的五个字符。如果没有指定长度,则采用默认 值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数, 使用的数字则是环境变量数值长度加上指定的偏移量或长度。 %PATH:~-10% 会提取 PATH 变量的最后十个字符。 %PATH:~0,-2% 会提取 PATH 变量的所有字符,除了最后两个。

:: 该符号在批处理中为注释符,类似于rem,但有的特殊字符(重定向符号和管道符号)在rem中仍会执行,而所有:: 后的语句都将被解释器忽略,且::在大量语句中显然比rem更加醒目,因此推荐使用::注释。

~ set语句: 参考set命令帮助中使用~的部分 for语句: 参考for命令帮助中的命令增强部分

> 重定向符号,当将输出内容重定向到文件时,>表示覆盖输出到文件,>>表示追加输出到文件。

重定向 1为标准输出stdout、2为标准错误stderr。系统默认%值是1,也就是1>,而1>可以简写为>,也就是标准输出默认为>。stdout的默认目标是终端,stderr的默认目标为也是终端。

句柄数字代号描述STDIN0键盘输入STDOUT1输出到命令提示符窗口STDERR2错误输出到命令提示符窗口UNDEFINED3-9句柄由应用程序单独定义,由各工具特有重定向到其它句柄通过&连接句柄代号 #将标准错误重定向到标准输出 2>&1

利用管道符|实现将标准输出重定向到下一个命令的标准输入

tasklist | findstr "explorer"

在这里插入图片描述

示例表示将tasklist命令执行的结果作为findstr命令的输入,即在其结果中查找explorer进程。

nul #打印变量(开启延时变量的情况下将%替换为!) echo %var% 延迟变量扩充 %var%相当于宏变量直接将值换到命令中,然后执行。!var!则是普通变量,每次可以直接读取内存中的值。 # 开启扩充 setlocal ENABLEDELAYEDEXPANSION #关闭扩充 setlocal DISABLEDELAYEDEXPANSION for语句单行分割迭代文本处理 set string=%str% :split for /f "tokens=1,* delims=;" %%i in ("%string%") do ( echo %%i set string=%%j ) if not "%string%"=="" goto split pause



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3