WINDOWS常用命令大全
1、相关注意事项
相关官网学习地址:https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/cd
本文章命令顺序是根据官网命令字母排序。
2、常用命令
2.1 call
从另一个批处理程序调用一个批处理程序,而不停止父批处理程序。 call 命令接受标签作为调用的目标。
备注
在脚本或批处理文件外部使用 call 时,它在命令提示符下不起作用。
语法
复制
call [drive:][path]<filename> [<batchparameters>]]
call [:<label> [<arguments>]]
参数
展开表
参数 | 描述 |
---|---|
[<drive>:][<path>]<filename> | 指定要调用的批处理程序的位置和名称。 参数 <filename> 是必需的,并且它必须具有 .bat 或 .cmd 扩展名。 |
<batchparameters> | 指定批处理程序所需的任何命令行信息。 |
:<label> | 指定希望批处理程序控件跳转到的标签。 |
<arguments> | 指定要传递到批处理程序的新实例的命令行信息(从 :<label> 开始)。 |
/? | 在命令提示符下显示帮助。 |
批处理参数
下表列出了批处理脚本自变量引用(%0、%1、…)。
在批处理脚本中使用 %* 值会引用所有自变量(例如:%1、%2、%3…)。
可以使用以下可选语法作为批处理参数的替换 (%n):
展开表
批处理参数 | 描述 |
---|---|
%~1 | 展开 %1 并删除周围的引号。 |
%~f1 | 将 %1 扩展为完全限定路径。 |
%~d1 | 仅将 %1 扩展为驱动器号。 |
%~p1 | 仅将 %1 扩展为路径。 |
%~n1 | 仅将 %1 扩展为文件名。 |
%~x1 | 仅将 %1 扩展为文件扩展名。 |
%~s1 | 将 %1 扩展为仅包含短名称的完全限定路径。 |
%~a1 | 将 %1 扩展为文件属性。 |
%~t1 | 将 %1 扩展为文件的日期和时间。 |
%~z1 | 将 %1 扩展为文件的大小。 |
%~$PATH:1 | 搜索 PATH 环境变量中列出的目录,然后将 %1 扩展为找到的第一个目录的完全限定名称。 如果未定义环境变量名称或搜索找不到该文件,则此修饰符将扩展为空字符串。 |
下表显示了如何将修饰符与复合结果的批处理参数组合在一起:
展开表
带修饰符的批处理参数 | 描述 |
---|---|
%~dp1 | 仅将 %1 扩展为驱动器号和路径。 |
%~nx1 | 仅将 %1 扩展为文件名和扩展名。 |
%~dp$PATH:1 | 在 PATH 环境变量中列出的目录中搜索 %1,然后扩展为找到的第一个目录的驱动器号和路径。 |
%~ftza1 | 展开 %1 以显示类似于 dir 命令的输出。 |
在上述示例中,%1 和 PATH 可被替换为其他有效值。 语法 %~ 由有效的自变量编号终止。 修饰符 %~ 不能与 %* 一起使用。
2.2 cd
cd/ 回到c盘
cd .. 回到上一级
cd [路径] 跳转到指定路径
2.3 chcp
chcp 936 修改cmd命令显示文字
代码页 | 国家/地区或语言 |
---|---|
437 | 美国 |
850 | 多语言 (拉丁文我) |
852 | 西里尔语 (俄语) |
855 | 西里尔语 (俄语) |
857 | 土耳其语 |
860 | 葡萄牙语 |
861 | 冰岛语 |
863 | 加拿大法语 |
865 | 北欧 |
866 | 俄语 |
869 | 现代希腊语 |
936 | 中文 |
2.4 clip
语法
复制
<command> | clip
clip < <filename>
参数
参数 | 说明 |
---|---|
<command> | 指定要将其输出发送到 Windows 剪贴板的命令。 |
<filename> | 指定要将其内容发送到 Windows 剪贴板的文件。 |
/? | 在命令提示符下显示帮助。 |
示例
dir | clip 复制当前目录到剪切板
clip 》 1.txt 复制指定文件的内容到剪切板
2.5 cls
清除命令行窗口
2.6 color
修改命令窗口的颜色
2.7 copy
拷贝文件到指定位置
copy 1.txt 2.txt 拷贝1.txt到2.txt中
copy *.txt 2.txt 将所有的txt文件内容拷贝到2.txt中
2.8 del
删除文件
参数
展开表
参数 | 说明 |
---|---|
<names> | 指定一个或多个文件或目录的列表。 通配符可用于删除多个文件。 如果指定了目录,则将删除该目录中的所有文件。 |
/p | 删除指定文件前提示用户进行确认。 |
/f | 强制删除只读文件。 |
/s | 从当前目录和所有子目录中删除指定的文件。 显示正在删除的文件的名称。 |
/q | 指定安静模式。 系统不会提示你确认删除。 |
/a[:]<attributes> | 根据以下文件属性删除文件:r 只读文件h 隐藏文件i 非内容索引文件s 系统文件a 可用于存档的文件l 重新分析点**-** 用作前缀,表示“非”。 |
/? | 在命令提示符下显示帮助。 |
示例
del 1.txt 删除文件
del 1.txt /p 提示性的删除文件
2.9 dir
显示文件目录
参数
参数 | 说明 |
---|---|
[<drive>:][<path>] | 指定要查看其列表的驱动器和目录。 |
[<filename>] | 指定要查看其列表的特定文件或文件组。 |
/p | 一次显示一个列表屏幕。 要查看下一个屏幕,请按任意键。 |
/q | 显示文件所有权信息。 |
/w | 以宽格式显示列表,每行最多包含五个文件名或目录名称。 |
/d | 以与 /w 相同的格式显示列表,但文件按列排序。 |
/a[[:]<attributes> ] | 仅显示具有指定属性的目录和文件的名称。 如果不使用此参数,此命令将显示除隐藏文件和系统文件之外的所有文件的名称。 如果在未指定任何属性的情况下使用此参数,则此命令将显示所有文件的名称,包括隐藏文件和系统文件。 可能的属性值列表包括:d - 目录h - 隐藏文件s - 系统文件l - 重新分析点r - 只读文件a - 可用于存档的文件i - 非内容索引文件你可以使用这些值的任意组合,但不要使用空格分隔值。 (可选)可以使用冒号 (😃 分隔符,或者你可以使用连字符 (-) 作为前缀来表示“非”。 例如,使用 -s 属性不会显示系统文件。 |
/o[[:]<sortorder> ] | 根据 sortorder 对输出进行排序,可以是以下值的任意组合:n - 按名称字母顺序排列e - 按扩展名字母顺序排列g - 首先列出组目录s - 按大小,最先列出最小的文件d - 按日期/时间,最先列出最早的文件使用 - 前缀可反转排序顺序多个值将按照你列出它们的顺序进行处理。 不要用空格分隔多个值,但可以选择使用冒号 (😃。如果未指定 sortorder,则 dir /o 将按字母顺序列出目录,后跟文件,这些文件也按字母顺序排序。 |
/t[[:]<timefield> ] | 指定要显示或用于排序的时间字段。 timefield 的可用值包括:c - 创建时间a - 上次访问时间w - 最后写入时间 |
/s | 列出指定目录和所有子目录中出现的指定文件名的每个匹配项。 |
/b | 显示纯粹的目录和文件列表,不含其他信息。 /b 参数将覆盖 /w。 |
/l | 使用小写显示未排序的目录名称和文件名。 |
/n | 在屏幕最右侧显示带有文件名的长列表格式。 |
/x | 显示为非 8dot3 文件名生成的短名称。 显示内容与 /n 的显示内容相同,但短名称插入到长名称之前。 |
/c | 以千位分隔符显示文件大小。 此选项为默认行为。 使用 /-c 隐藏分隔符。 |
/4 | 以四位数格式显示年份。 |
/r | 显示文件的备用数据流。 |
/? | 在命令提示符下显示帮助。 |
示例
dir 显示当前目录
dir c: 显示c盘目录
dir c: > 2.txt 将输出写入到2.txt文件中
2.10 echo
echo 显示echo是开启还是关闭状态
echo off|on 关闭或者开启
echo "hello,world" 输出指定字符串
echo. 显示空白行
2.11 exit
退出当前cmd窗口
2.12 find
查找指定文件中的指定字符串并显示行号
语法
find [/v] [/c] [/n] [/i] [/off[line]] <"string"> [[<drive>:][<path>]<filename>[...]]
参数
参数 | 说明 |
---|---|
/v | 显示不包含指定 <string> 的所有行。 |
/c | 对包含指定 <string> 的行进行计数,并显示总计。 |
/n | 每行前面都有文件的行号。 |
/i | 指定搜索不区分大小写。 |
/off[line] | 如果文件设置了脱机属性,则不会被跳过。 |
<"string"> | 必需。 指定想要搜索的字符组(用引号括起来)。 |
[<drive>:][<path>]<filename> | 指定要在其中搜索指定字符串的文件的位置和名称。 |
/? | 在命令提示符下显示帮助。 |
退出代码
退出代码 | 说明 |
---|---|
0 | 已找到搜索的字符串 |
1 | 找不到搜索的字符串 |
2 | 找不到搜索的文件或提供了无效的命令行开关 |
2.22 for
语法
复制
for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]
参数
参数 | 说明 |
---|---|
{%% | %}<variable> | 必填。 表示可替换参数。 使用单百分号 (% ) 可在命令提示符下执行 for 命令。 使用双百分号 (%% ) 可在批处理文件中执行 for 命令。 变量区分大小写,并且必须用字母值表示,例如 %a、%b 或 %c。 |
(<set> ) | 必需。 指定要对其运行命令的一个或多个文件、目录或文本字符串或值范围。 需要使用括号。 |
<command> | 必需。 指定要对每个文件、目录或文本字符串执行的命令,或针对 set 中包含的值范围执行的命令。 |
<commandlineoptions> | 指定要与指定命令一起使用的任何命令行选项。 |
/? | 在命令提示符下显示帮助。 |
备注
-
可以在批处理文件中使用此命令,也可以直接从命令提示符使用此命令。
-
以下属性适用于 for 命令:
- 此命令将
% variable
或%% variable
替换为指定集中的每个文本字符串,直到指定的命令处理完所有文件。 - 变量名称区分大小写并且是全局性的,一次最多不能超过 52 个处于活动状态。
- 可以对变量使用任何字符,但为了避免与批处理参数
%0
到%9
混淆,请避免使用数字 0 到 9。 对于简单的批处理文件,单个字符(如%%f
)将起作用。 - 可以在复杂的批处理文件中对变量使用多个值,以区分不同的可替换变量。
- 此命令将
-
set 参数可以表示单个文件组或多组文件。 可以使用通配符(***** 和 ?)指定文件集。 以下是有效的文件集:
复制
(*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt feb*.doc feb*.rpt) (ar??1991.* ap??1991.*)
-
使用此命令时,set 参数中的第一个值将替换
% variable
或%% variable
,然后指定的命令将处理此值。 这一直持续到与 set 值相对应的所有文件(或文件组)都被处理为止。 -
In 和 do 不是参数,但必须将它们与此命令一起使用。 如果省略其中任何一个关键字,则会出现错误消息。
-
如果启用了命令扩展(默认状态),则支持下列形式的 for:
-
仅限目录:如果 set 参数中包含通配符(***** 或 ?),则将针对与 set 参数匹配的每个目录(而不是指定目录中的一组文件)执行指定的命令。 语法为:
复制
for /d {%%|%}<Variable> in (<Set>) do <Command> [<CommandLineOptions>]
-
递归:遍历以 drive:path 为根的目录树,并在树的每个目录中执行 for 语句。 如果在 /r 之后没有指定目录,则使用当前目录作为根目录。 如果 set 参数只是一个句点 (.),则仅枚举目录树。 语法为:
复制
for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlinepptions>]
-
迭代值范围:使用迭代变量设置起始值 (start#),然后逐步通过设置的值范围,直到该值超过设置的结束值 (end#)。 /l 将通过比较 start# 和 end# 来执行迭代。 如果 start# 小于 end#,则执行该命令。 当迭代变量超过 end# 时,命令 shell 退出循环。 你还可以使用 step# 来逐步减少值的范围。 例如,(1,1,5) 生成序列 1 2 3 4 5,(5,-1,1) 生成序列 5 4 3 2 1。 语法为:
复制
for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlinepptions>]
-
迭代和文件解析:使用文件解析来处理命令输出、字符串和文件内容。 使用迭代变量定义要检查的内容或字符串,并使用各种 parsingkeywords 选项进一步修改解析。 使用 parsingkeywords 标记选项来指定哪些标记应作为迭代变量传递。 如果使用时不带标记选项,/f 将只检查第一个标记。
文件解析包括读取输出、字符串或文件内容,然后将其拆分为单独的文本行,并将每一行解析为零个或多个标记。 然后调用 for 循环,并将迭代变量值设置为标记。 默认情况下,/f 传递每个文件的每一行中的第一个空白分隔标记。 空行将被跳过。
语法为:
复制
for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlinepptions>] for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlinepptions>] for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlinepptions>]
set 参数指定一个或多个文件名。 将依次打开、读取和处理每个文件,然后才会移动到 set 参数中指定的下一个文件。 要覆盖默认分析行为,请指定 parsingkeywords。 这是一个带引号的字符串,其中包含一个或多个用于指定不同分析选项的关键字。
如果使用 usebackq 选项,请使用以下语法之一:
复制
for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (<Set>) do <command> [<commandlinepptions>] for /f [usebackq <parsingkeywords>] {%%|%}<variable> in ('<LiteralString>') do <command> [<commandlinepptions>] for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (`<command>`) do <command> [<commandlinepptions>]
下表列出了可用于 parsingkeywords 的分析关键字。
展开表
关键字 说明 eol= <c>
指定行尾字符(只有一个字符)。 skip= <n>
指定文件开头要跳过的行数。 delims= <xxx>
指定分隔符集。 这将替换默认分隔符集,即空格和制表符。 tokens= <x,y,m–n>
指定每次迭代时要将每行中的哪些标记传递给 for 循环。 因此,会分配额外的变量名。 m-n 指定从第 m 个到第 n 个标记的范围。 如果 tokens= 字符串中的最后一个字符是星号 (*****),则会分配一个额外的变量,并且会接收解析的最后一个标记之后的行上的剩余文本。 usebackq 指定将双引号字符串作为命令运行,使用单引号字符串作为文字字符串,或者对于包含空格的长文件名,允许将 <set>
中的每个文件名都括在双引号中。 -
变量替换:下表列出了可选语法(适用于任何变量 I):
展开表
带修饰符的变量 说明 %~I
扩展 %I
,这将移除所有周围的引号。%~fI
将 %I
扩展为完全限定的路径名。%~dI
将 %I
扩展为仅包含驱动器号。%~pI
将 %I
扩展为仅包含路径。%~nI
将 %I
扩展为仅包含文件名。%~xI
将 %I
扩展为仅包含文件扩展名。%~sI
将路径扩展为仅包含短名称。 %~aI
将 %I
扩展为文件属性。%~tI
将 %I
扩展为文件的日期和时间。%~zI
将 %I
扩展为文件的大小。%~$PATH:I
搜索 PATH 环境变量中列出的目录,然后将 %I
扩展为找到的第一个目录的完全限定名称。 如果未定义环境变量名称或搜索找不到该文件,则此修饰符将扩展为空字符串。下表列出了可用于获取复合结果的修饰符组合。
展开表
带组合修饰符的变量 说明 %~dpI
将 %I
扩展为仅包含驱动器号和路径。%~nxI
将 %I
扩展为仅包含文件名和扩展名。%~fsI
将 %I
扩展为仅包含短名称的完整路径名。%~dp$PATH:I
在 PATH 环境变量中列出的目录中搜索 %I
,然后扩展为找到的第一个目录的驱动器号和路径。%~ftzaI
将 %I
扩展为类似于 dir 命令的输出行。在上面的示例中,可以将
%I
和 PATH 替换为其他有效值。 有效的 for 变量名称将结束 %~ 语法。通过使用大写的变量名(如
%I
),可以提高代码的易读性,并避免与不区分大小写的修饰符混淆。
-
-
解析字符串:你可以在直接字符串上使用解析逻辑,方法是:使用双引号(不带 usebackq)或单引号(带usebackq)–例如,(MyString) 或 (‘MyString’)。
for /f``<literalstring>
<literalstring>
被视为来自文件的单行输入。 解析用双引号括起的<literalstring>
时,命令符号(如\ & | > < ^
)被视为普通字符。 -
解析输出:可以使用
for /f
命令来解析命令的输出,方法是在括号之间加上反引号<command>
。 它将被视为命令行,随后传递给子 cmd.exe。 输出会捕获到内存中,并像文件一样进行解析。
示例
要在批处理文件中使用 for,请使用以下语法:
复制
for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
要使用可替换变量 %f 显示当前目录中扩展名为.doc 或.txt 的所有文件的内容,请键入:
复制
for %f in (*.doc *.txt) do type %f
在前面的示例中,当前目录中扩展名为 .doc 或 .txt 的每个文件都将被替换为 %f 变量,直到显示每个文件的内容。 要在批处理文件中使用此命令,请将所有出现的 %f 替换为 %%f。 否则,将忽略该变量并显示错误消息。
要分析文件并忽略注释行,请键入:
复制
for /f eol=; tokens=2,3* delims=, %i in (myfile.txt) do @echo %i %j %k
此命令将解析 myfile.txt 中的每一行。 此命令将忽略以分号开头的行,并将每行的第二个和第三个标记传递给 for 主体(标记由逗号或空格分隔)。 for 语句的主体引用 %i 以获取第二个标记,引用 %j 以获取第三个标记,引用 %k 以获取所有剩余标记。 如果你提供的文件名包含空格,请在文本两边使用引号(例如,File Name)。 要使用引号,必须使用 usebackq。 否则,引号将被解释为定义要解析的文字字符串。
%i 在 for 语句中显式声明。 %j 和 %k 是使用 tokens= 隐式声明的。 可以使用 tokens= 来指定最多 26 个标记,前提是不会导致尝试声明超过字母 z 或 Z 的变量。
要通过将 set 放在括号中来解析命令的输出,请键入:
复制
for /f "usebackq delims==" %i in (`set`) do @echo %i
要对目录中的所有文件执行递归循环(包括子目录)并回显其完整路径、上次修改时间及其文件大小,请键入:
复制
for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA
2.23 hostname
显示主机名称
2.24 if
语法
if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]
如果启用了命令扩展,请使用以下语法:
if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if cmdextversion <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]
参数
参数 | 说明 |
---|---|
not | 指定仅当条件为 false 时,才应执行该命令。 |
errorlevel <number> | 仅当由 Cmd.exe 运行的上一个程序返回等于或大于 number 的退出代码时,才指定 true 条件。 |
<command> | 指定在满足上述条件时应执行的命令。 |
<string1>==<string2> | 仅当 string1 和 string2 相同时,才指定 true 条件。 这些值可以是字符串或批处理变量(例如,%1 )。 无需将字符串用引号括起来。 |
存在 <filename> | 如果指定的文件名存在,则指定 true 条件。 |
<compareop> | 指定三字母比较运算符,包括:EQU - 等于NEQ - 不等于LSS - 小于LEQ - 小于或等于GTR - 大于GEQ - 大于或等于 |
/i | 强制字符串比较忽略大小写。 可以采用 if 的 string1==string2 形式使用 /i。 这些比较是通用的,因为如果 string1 和 string2 仅由数字组成,则字符串将转换为数值并执行数值比较。 |
cmdextversion <number> | 仅当与 Cmd.exe 的命令扩展功能关联的内部版本号等于或大于指定的数值时,才指定 true 条件。 第一个版本为 1。 向命令扩展添加大量增强功能时,它会以 1 为增量增加。 禁用命令扩展时(默认情况下,启用命令扩展),cmdextversion 条件永远不会为 true。 |
defined <variable> | 如果定义了变量,则指定 true 条件。 |
<expression> | 指定命令行命令以及要在 else 子句中传递给该命令的任何参数。 |
/? | 在命令提示符下显示帮助。 |
备注
- 如果 if 子句中指定的条件为 true,则执行条件后面的命令。如果条件为 false,则忽略 if 子句中的命令,并且该命令执行 else 子句中指定的任何命令。
- 程序停止时,它将返回退出代码。 若要使用退出代码作为条件,请使用 errorlevel 参数。
- 如果使用 defined,则将以下三个变量添加到环境中:%errorlevel%、%cmdcmdline% 和 %cmdextversion%。
- %errorlevel%:扩展为 ERRORLEVEL 环境变量的当前值的字符串表示形式。 此变量假定尚不存在名为 ERRORLEVEL 的现有环境变量。 如果存在,将获得该 ERRORLEVEL 值。
- %cmdcmdline%:扩展到在 Cmd.exe 进行任何处理之前传递给 Cmd.exe 的原始命令行。 这假定尚不存在名为 CMDCMDLINE 的现有环境变量。 如果存在,将获得该 CMDCMDLINE 值。
- %cmdextversion%:扩展为 cmdextversion 的当前值的字符串表示形式。 这假定不存在名为 CMDEXTVERSION 的现有环境变量。 如果存在,将获取该 CMDEXTVERSION 值。
- 必须在 if 后面的命令所在的同一行上使用 else 子句。
示例
若要显示消息“如果找不到文件 Product.dat ,则找不到数据文件”,请键入:
if not exist product.dat echo Cannot find data file
若要在驱动器 A 中格式化磁盘并在格式化过程中发生错误时显示错误消息,请在批处理文件中键入以下行:
:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.
若要从当前目录中删除文件 Product.dat 或在找不到 Product.dat 时显示消息,请在批处理文件中键入以下行:
IF EXIST Product.dat (
del Product.dat
) ELSE (
echo The Product.dat file is missing.
)
备注
这些行可以组合成一行,如下所示:
IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)
若要在运行批处理文件后回显 ERRORLEVEL 环境变量的值,请在批处理文件中键入以下行:
goto answer%errorlevel%
:answer1
echo The program returned error level 1
goto end
:answer0
echo The program returned error level 0
goto end
:end
echo Done!
若要在 ERRORLEVEL 环境变量的值小于或等于 1 时转到 ok 标签,请键入:
if %errorlevel% LEQ 1 goto okay
2.25 ipconfig
显示当前计算机ip信息
2.26 makecab
压缩当前文件夹
语法
makecab [/v[n]] [/d var=<value> ...] [/l <dir>] <source> [<destination>]
makecab [/v[<n>]] [/d var=<value> ...] /f <directives_file> [...]
参数
参数 | 说明 |
---|---|
<source> | 要压缩的文件。 |
<destination> | 要提供给压缩后文件的文件名。 如果省略,源文件名称的最后一个字符将替换为下划线 (_) 并用作目标。 |
/f <directives_file> | 具有 makecab 指令的文件(可以重复)。 |
/d var=<value> | 定义具有指定值的变量。 |
/l <dir> | 要放置目标的位置(默认位置为当前目录)。 |
/v[<n> ] | 设置调试详细级别 (0=none,…,3=full)。 |
/? | 在命令提示符下显示帮助。 |
makecab 1.txt 2.zip /l ./hello 将1.txt压缩到hello/2.zip中
2.27 md || mkdir
创建目录
mkdir hello
2.28 move
移动文件到指定目录
move /y ./*.txt hello 移动.txt文件到指定目录 /y代表提示是否覆盖文件 -y代表是不是要启动覆盖文件的提示
2.28 mstsc
打开远程连接
2.29 pause
暂停批处理程序的输出
2.30 ping
检查网络是否畅通
ping 192.168.110.212
2.31 删除目录
语法
rd [<drive>:]<path> [/s [/q]]
参数
参数 | 说明 |
---|---|
[<drive>:]<path> | 指定要删除的目录的位置和名称。 Path 是必需的。 如果在指定 path 的开头包含反斜杠 (),则该 path 从根目录开始(无论当前目录为何)。 |
/s | 删除目录树(指定目录及其所有子目录,包括所有文件)。 |
/q | 指定安静模式。 删除目录树时不提示进行确认。 仅当还指定了 /s 时,/q 参数才有效。注意:在安静模式下运行时,无需确认即可删除整个目录树。 在使用 /q 命令行选项之前,请确保移动或备份重要文件。 |
/? | 在命令提示符下显示帮助。 |
rd /s /q hello
2.32 rem
在批处理程序中记录注释
2.33 ren
重命名目录/文件
ren *.txt *.doc
2.34 robocopy
将文件复制到其他地方语法
Windows 命令提示符复制
robocopy <source> <destination> [<file>[ ...]] [<options>]
例如,若要将名为 yearly-report.mov 的文件从 c:\reports 复制到文件共享 \marketing\videos,同时启用多线程以提高性能(使用 /mt 参数)并在传输中断时重新开始传输(使用 /z 参数),请键入:
Windows 命令提示符复制
robocopy c:\reports "\\marketing\videos" yearly-report.mov /mt /z
如果从设备的根目录复制了任何数据,则目标目录将在复制过程中采用“隐藏”属性。
参数
参数 | 描述 |
---|---|
<source> | 指定源目录的路径。 |
<destination> | 指定目标目录的路径。 |
<file> | 指定要复制的一个或多个文件。 支持通配符(***** 或 ?)。 如果未指定此参数,*.* 将用作默认值。 |
<options> | 指定要与 robocopy 命令结合使用的选项,包括复制、文件、重试、日志记录和作业选项。 |
复制选项
选项 | 说明 |
---|---|
/s | 复制子目录。 此选项自动排除空目录。 |
/e | 复制子目录。 此选项自动包括空目录。 |
/lev:<n> | 仅复制源目录树的前 n 个级别。 |
/z | 以可重启模式复制文件。 在可重启模式下,如果文件复制中断,robocopy 可以从中断位置继续,无需重新复制整个文件。 |
/b | 以备份模式复制文件。 在备份模式下,robocopy 会替代文件和文件夹权限设置 (ACL),后者在未被替代的情况下可能会阻止访问。 |
/zb | 以可重启模式复制文件。 如果文件访问被拒绝,则切换到备份模式。 |
/j | 使用无缓冲 I/O 进行复制(建议用于大文件)。 |
/efsraw | 在 EFS RAW 模式下复制所有已加密的文件。 |
/copy:<copyflags> | 指定要复制的文件属性。 此选项的有效值为:D - 数据A - 属性T - 时间戳X - 跳过替换数据流S - NTFS 访问控制列表 (ACL)O - 所有者信息U - 审核信息/COPY 选项的默认值为 DAT(数据、属性和时间戳)。 如果使用 /B 或 /ZB,则会忽略 X 标志。 |
/dcopy:<copyflags> | 指定要在目录中复制的内容。 此选项的有效值为:D - 数据A - 属性T - 时间戳E - 扩展属性X - 跳过替换数据流此选项的默认值为 DA(数据和属性)。 |
/秒 | 复制文件和安全性设置(等效于 /copy:DATS)。 |
/copyall | 复制所有文件信息(等效于 /copy:DATSOU)。 |
/nocopy | 不复制文件信息(与 /purge 结合使用时很有用)。 |
/secfix | 修复所有文件的文件安全性,甚至包括已跳过的文件。 |
/timfix | 修复所有文件的文件时间,甚至包括已跳过的文件。 |
/purge | 删除源中不再存在的目标文件和目录。 将此选项与 /e 选项和目标目录结合使用可以防止覆盖目标目录安全性设置。 |
/mir | 镜像目录树(等效于 /e 加上 /purge)。 将此选项与 /e 选项和目标目录结合使用会覆盖目标目录安全性设置。 |
/mov | 移动文件,并在复制文件后从源中将其删除。 |
/move | 移动文件和目录,并在复制这些文件和目录后从源中将其删除。 |
/a+:[RASHCNET] | 将指定的属性添加到复制的文件。 此选项的有效值为:R - 只读A - 存档S - 系统H - 隐藏C - 压缩N - 不为内容编制索引E - 加密T - 临时 |
/a-:[RASHCNETO] | 从复制的文件中删除指定的属性。 此选项的有效值为:R - 只读A - 存档S - 系统H - 隐藏C - 压缩N - 不为内容编制索引E - 加密T - 临时O - 脱机 |
/create | 仅创建目录树和零长度文件。 |
/fat | 仅使用 8.3 字符长度 FAT 文件名创建目标文件。 |
/256 | 关闭对超过 256 个字符的路径的支持。 |
/mon:<n> | 监视源,并在检测到超过 n 项更改时再次运行。 |
/mot:<m> | 监视源,并在检测到更改时在 m 分钟后再次运行。 |
/rh:hhmm-hhmm | 指定可以启动新副本的运行时间。 |
/pf | 检查每个文件(不是每个阶段)的运行时间。 |
/ipg:<n> | 指定数据包间的间隙,以便在慢速线路上释放带宽。 |
/sj | 将交接点(软链接)复制到目标路径而不是链接目标。 |
/sl | 不是接在符号链接的后面,而是创建链接的副本。 |
/mt:<n> | 使用 n 个线程创建多线程副本。 n 必须是 1 到 128 的整数。 n 的默认值为 8。 为提高性能,请使用 /log 选项重定向输出。/mt 参数不能与 /ipg 和 /efsraw 参数结合使用。 |
/nodcopy | 不复制目录信息(执行默认的 /dcopy:DA)。 |
/nooffload | 在不使用 Windows 复制/卸载机制的情况下复制文件。 |
/compress | 在文件传输期间请求网络压缩(如果适用)。 |
/sparse | 支持在复制期间保留文件的稀疏状态。 |
重要
使用 /secfix 复制选项时,请使用以下附加复制选项之一指定要复制的安全信息类型:
- /copyall
- /copy:o
- /copy:s
- /copy:u
- /sec
备注
/mt 参数是在 Windows Server 2008 R2 中引入的,其功能适用于当前版本的 Windows Server。
复制文件限制选项
选项 | 说明 |
---|---|
/iomaxsize:<n> [kmg] | 每个读取/写入周期请求的最大 i/o 大小,以 n 千字节、兆字节或千兆字节为单位。 |
/iorate:<n> [kmg] | 每秒请求的 i/o 速率,以 n 千字节、兆字节或千兆字节为单位。 |
/threshold:<n> [kmg] | 限制的文件大小阈值,以 n 千字节、兆字节或千兆字节为单位(请参阅备注)。 |
文件选择选项
选项 | 描述 |
---|---|
/a | 仅复制设置了 Archive 属性的文件。 |
/m | 仅复制设置了 Archive 属性的文件,并重置 Archive 属性。 |
/ia:[RASHCNETO] | 仅包括设置了任何指定属性的文件。 此选项的有效值为:R - 只读A - 存档S - 系统H - 隐藏C - 压缩N - 不为内容编制索引E - 加密T - 临时O - 脱机 |
/xa:[RASHCNETO] | 排除设置了任何指定属性的文件。 此选项的有效值为:R - 只读A - 存档S - 系统H - 隐藏C - 压缩N - 不为内容编制索引E - 加密T - 临时O - 脱机 |
/xf <filename>[ ...] | 排除与指定的名称或路径匹配的文件。 支持通配符(***** 和 ?)。 |
/xd <directory>[ ...] | 排除与指定的名称和路径匹配的目录。 |
/xc | 排除时间戳相同但文件大小不同的现有文件。 |
/xn | 从复制中排除比目标更新的源目录文件。 |
/xo | 从复制中排除比目标更旧的源目录文件。 |
/xx | 排除目标(而不是源)中存在的额外文件和目录。 排除额外的文件不会从目标中删除这些文件。 |
/xl | 排除源(而不是目标)中存在的“孤立”文件和目录。 排除孤立的文件可防止将任何新文件添加到目标。 |
/im | 包括已修改的文件(更改时间不同)。 |
/is | 包括相同的文件。 相同文件的名称、大小、时间和所有属性都相同。 |
/it | 包括“已调整”的文件。 已调整文件的名称、大小和时间相同,但属性不同。 |
/max:<n> | 指定最大文件大小(以排除大于 n 个字节的文件)。 |
/min:<n> | 指定最小文件大小(以排除小于 n 个字节的文件)。 |
/maxage:<n> | 指定最大文件期限(以排除超过 n 天或早于特定日期的文件)。 |
/minage:<n> | 指定最小文件期限(排除不到 n 天或晚于特定日期的文件)。 |
/maxlad:<n> | 指定最大上次访问日期(排除有 n 天/自 n 日期以来未使用的文件)。 |
/minlad:<n> | 指定最小上次访问日期(排除有 n 天/自 n 日期以来已使用的文件)。如果 n 小于 1900,则 n 指定天数。 否则,n 指定 YYYYMMDD 格式的日期。 |
/xj | 排除交接点(通常默认会包含)。 |
/fft | 采用 FAT 文件时间(精度为两秒)。 |
/dst | 补偿一小时 DST 时差。 |
/xjd | 排除目录的交接点。 |
/xjf | 排除文件的交接点。 |
重试选项
选项 | 描述 |
---|---|
/r:<n> | 指定复制失败时的重试次数。 n 的默认值为 1,000,000(100 万次重试)。 |
/w:<n> | 指定等待重试的间隔时间,以秒为单位。 n 的默认值为 30(等待 30 秒)。 |
/reg | 将 /r 和 /w 选项中指定的值保存为注册表中的默认设置。 |
/tbd | 指定系统等待定义共享名称(重试错误 67)。 |
/lfsm | 在支持复制、暂停和恢复的低可用空间模式下运行(请参阅备注)。 |
/lfsm:<n> [kmg] | 指定下限值,以 n 千字节、兆字节或千兆字节为单位。 |
日志记录选项
选项 | 描述 |
---|---|
/l | 指定仅列出文件(而不复制、删除或设置时间戳)。 |
/x | 报告所有额外的文件,而不仅仅是已选择的文件。 |
/v | 生成详细输出,并显示所有已跳过的文件。 |
/ts | 在输出中包括源文件时间戳。 |
/fp | 在输出中包括文件的完整路径名称。 |
/bytes | 以字节为单位输出大小。 |
/ns | 指定不记录文件大小。 |
/nc | 指定不记录文件类。 |
/nfl | 指定不记录文件名。 |
/ndl | 指定不记录目录名。 |
/np | 指定不显示复制操作的进度(到目前为止复制的文件或目录数)。 |
/eta | 显示复制的文件的估计到达时间 (ETA)。 |
/log:<logfile> | 将状态输出写入到日志文件(覆盖现有的日志文件)。 |
/log+:<logfile> | 将状态输出写入日志文件(将输出追加到现有日志文件)。 |
/unilog:<logfile> | 将状态输出作为 Unicode 文本写入日志文件(覆盖现有日志文件)。 |
/unilog+:<logfile> | 将状态输出作为 Unicode 文本写入日志文件(将输出追加到现有日志文件)。 |
/tee | 将状态输出写入控制台窗口和日志文件。 |
/njh | 指定没有作业标头。 |
/njs | 指定没有作业摘要。 |
/unicode | 将状态输出显示为 Unicode 文本。 |
作业选项
选项 | 描述 |
---|---|
/job:<jobname> | 指定要从命名的作业文件派生参数。 若要运行 /job:jobname ,必须首先运行 /save:jobname 参数来创建作业文件。 |
/save:<jobname> | 指定要将参数保存到命名的作业文件。 此参数必须在运行 /job:jobname 之前运行。 必须在此参数之前指定所有复制、重试和日志记录选项。 |
/quit | 处理命令行后退出(以查看参数)。 |
/nosd | 指示未指定任何源目录。 |
/nodd | 指示未指定目标目录。 |
/if | 包括指定的文件。 |
注解
- 在卷的根目录上使用 /PURGE 或 /MIR 以前会导致 robocopy 也对系统卷信息目录中的文件应用请求的操作。 如果指定了其中任一选项,则不会再出现这种情况,robocopy 将跳过复制会话的顶级源和目标目录中具有该名称的任何文件或目录。
- 仅当源和目标文件系统支持更改时间戳(例如 NTFS)并且源和目标文件具有不同的更改时间但其他方面都相同时,修改的文件分类才适用。 默认不会复制这些文件。 指定 /IM 以包含它们。
- /DCOPY:E 标志请求应尝试为目录复制扩展属性。 如果无法复制目录的 EA,Robocopy 将继续执行。 /COPYALL 中不包含此标志。
- 如果指定了 /IoMaxSize 或 /IoRate,robocopy 将启用复制文件限制以减少系统负载。 可以对两者进行调整来优化值和复制参数,但允许系统和 robocopy 根据需要将它们调整为允许的值。
- 如果使用了 /Threshold,它将指定用于参与限制的最小文件大小。 小于该大小的文件将不会受到限制。 所有三个参数的值后面都可以跟一个可选的后缀字符,例如 [KMG](kilo、mega、giga)。
- 使用 /LFSM 请求 robocopy 在“低可用空间模式”下运行。 在此模式下,每当文件复制导致目标卷的可用空间低于“下限”值时,robocopy 都将暂停。 可以使用 /LFSM:n[KMG] 标志显式指定此值。
- 如果指定的 /LFSM 没有显式的下限值,则下限将设置为目标卷大小的 10%。 低可用空间模式与 /MT 和 /EFSRAW 不兼容。
退出(返回)代码
值 | 说明 |
---|---|
0 | 未复制任何文件。 未遇到任何失败。 没有不匹配的文件。 目标目录中已存在这些文件;因此跳过了复制操作。 |
1 | 已成功复制所有文件。 |
2 | 目标目录中的其他一些文件在源目录中不存在。 未复制任何文件。 |
3 | 复制了一些文件。 存在其他文件。 未遇到任何失败。 |
5 | 复制了一些文件。 某些文件不匹配。 未遇到任何失败。 |
6 | 存在其他文件和不匹配的文件。 未复制任何文件,也没有遇到任何故障,这意味着文件已存在于目标目录中。 |
7 | 已复制文件,存在文件不匹配情况,并且存在其他文件。 |
8 | 有多个文件未复制。 |
备注
任何等于或大于 8 的值表示复制操作期间至少发生了一次失败。
示例
强烈建议在运行 robocopy
命令时创建一个日志文件,该日志文件可在进程完成验证其完整性后查看。 在以下示例中,每一个都使用 /LOG:
参数。 若要将任何日志信息追加到同一日志文件,请改用 /LOG+:
参数。
若要将所有文件和子目录(包括空目录)从“Records”文件夹复制到驱动器“D”上的“Backup”文件夹,请键入以下内容:
Windows 命令提示符复制
robocopy C:\Users\Admin\Records D:\Backup /E /ZB /LOG:C:\Logs\Backup.log
若要将“Records”文件夹的内容镜像到驱动器“D”上的“Backup”文件夹,删除目标中不存在于源中的任何文件,重试 2 次,每次重试之间等待 5 秒,请键入以下内容:
Windows 命令提示符复制
robocopy C:\Users\Admin\Records D:\Backup /MIR /R:2 /W:5 /LOG:C:\Logs\Backup.log
若要将所有不为空的文件和子目录从“Records”文件夹复制到驱动器“D”上的“Backup”文件夹,使用 16 个多线程复制操作保留文件数据、属性和时间戳,请键入以下内容:
Windows 命令提示符复制
robocopy C:\Users\Admin\Records D:\Backup /S /E /COPY:DAT /MT:16 /LOG:C:\Logs\Backup.log
若要将文件和子目录(不包括空目录)从“Records”文件夹移动到驱动器“D”上的“Backup”文件夹,并排除超过 7 天的文件,请键入以下内容:
Windows 命令提示符复制
robocopy C:\Users\Admin\Records D:\Backup /S /MAXAGE:7 /MOV /LOG:C:\Logs\Backup.log
若要将所有文件和子目录(包括空目录)从“Records”文件夹复制到驱动器“D”上的“Backup”文件夹,显示每个文件的估计时间,并删除目标中不存在于源中的所有文件和目录,请键入以下内容:
Windows 命令提示符复制
robocopy C:\Users\Admin\Records D:\Backup /ETA /PURGE /LOG:C:\Logs\Backup.log
2.35 服务指令
语法
修改服务
sc.exe [<servername>] config [<servicename>] [type= {own | share | kernel | filesys | rec | adapt | interact type= {own | share}}] [start= {boot | system | auto | demand | disabled | delayed-auto}] [error= {normal | severe | critical | ignore}] [binpath= <binarypathname>] [group= <loadordergroup>] [tag= {yes | no}] [depend= <dependencies>] [obj= {<accountname> | <objectname>}] [displayname= <displayname>] [password= <password>]
创建服务
sc.exe [<servername>] create [<servicename>] [type= {own | share | kernel | filesys | rec | interact type= {own | share}}] [start= {boot | system | auto | demand | disabled | delayed-auto}] [error= {normal | severe | critical | ignore}] [binpath= <binarypathname>] [group= <loadordergroup>] [tag= {yes | no}] [depend= <dependencies>] [obj= {<accountname> | <objectname>}] [displayname= <displayname>] [password= <password>]
删除服务
sc.exe [<servername>] delete [<servicename>]
查询服务
sc.exe [<servername>] query [<servicename>] [type= {driver | service | all}] [type= {own | share | interact | kernel | filesys | rec | adapt}] [state= {active | inactive | all}] [bufsize= <Buffersize>] [ri= <Resumeindex>] [group= <groupname>]
参数
参数 | 描述 |
---|---|
<servername> | 指定服务所在的远程服务器的名称。 该名称必须使用通用命名约定 (UNC) 格式(例如 \myserver)。 若要在本地运行 SC.exe,请不要使用此参数。 |
<servicename> | 指定 getkeyname 操作返回的服务名称。 |
`type= {own | share |
`start= {boot | system |
`error= {normal | severe |
binpath= <binarypathname> | 指定服务二进制文件的路径。 binpath= 没有默认值,必须提供此字符串。 此外,可以在字符串前面指定 ntsd -d 以进行调试。 有关详细信息,请参阅使用 CDB 和 NTSD 进行调试。 |
group= <loadordergroup> | 指定此服务所属的群组的名称。 群组列表存储在注册表中的 HKLM\System\CurrentControlSet\Control\ServiceGroupOrder 子项中。 默认值为 null。 |
`tag= {yes | no}` |
depend= <dependencies> | 指定必须在此服务之前启动的服务或群组的名称。 名称由正斜杠 (/) 分隔。 |
`obj= { | }` |
displayname= <displayname> | 指定用于在用户界面程序中标识服务的描述性名称。 例如,一个特定服务的子项名称是 wuauserv,它具有更友好的显示名称“自动更新”。 |
password= <password> | 指定密码。 如果使用 LocalSystem 帐户以外的帐户,则这是必需操作。 |
/? | 在命令提示符下显示帮助。 |
2.36 taskkill
结束进程
语法
taskkill [/s <computer> [/u [<domain>\]<username> [/p [<password>]]]] {[/fi <filter>] [...] [/pid <processID> | /im <imagename>]} [/f] [/t]
参数
参数 | 说明 |
---|---|
/s <computer> | 指定远程计算机的名称或 IP 地址(请勿使用反斜杠)。 默认为本地计算机。 |
/u <domain>\<username> | 使用 <username> 或 <domain>\<username> 指定的用户的帐户权限运行该命令。 仅当还指定了 /s 时,才能指定 /u 参数。 默认值是当前登录到发出该命令的计算机的用户的权限。 |
/p <password> | 指定 /u 参数中指定的用户帐户的密码。 |
/fi <filter> | 应用筛选器以选择一组任务。 可以使用多个筛选器或使用通配符 (* ) 指定所有任务或映像名称。 本文的“筛选器名称、运算符和值”部分列出了有效的筛选器。 |
/pid <processID> | 指定要终止的进程的进程 ID。 |
/im <imagename> | 指定要终止的进程的映像名称。 使用通配符 (* ) 指定所有映像名称。 |
/f | 指定强制结束进程。 对于远程进程,将忽略此参数;所有远程进程都会被强制结束。 |
/t |
2.37 title
为命令窗口设置标题
2.38 tree
显示目录树
语法
tree [<drive>:][<path>] [/f] [/a]
参数
参数 | 描述 |
---|---|
<drive>: | 指定包含要显示其目录结构的磁盘的驱动器。 |
<path> | 指定要显示其目录结构的目录。 |
/f | 显示每个目录中的文件名。 |
/a | 指定使用文本字符而不是图形字符来显示链接子目录的行。 |
/? | 在命令提示符下显示帮助。 |
示例
tree ./ -f >2.txt 显示当前目录树并输出到2.txt文件中
2.39 type
显示指定文件内容
type 2.txt
2.40 timeout
将命令处理器暂停指定的秒数。 此命令通常用于批处理文件。
timeout /t 3s 暂停3s
2.41 goto
将 cmd.exe 定向到批处理程序中的标记行。 在批处理程序中,此命令将命令处理定向到由标签标识的行。 找到标签后,继续处理,从下一行开始的命令开始。
(可以搭配if做while循环)
示例如下:
:while_loop
set /p username="请输入你的名字"
echo %username%
if %username% == zhou (
echo 输入正确
echo cmd窗口将在3秒后关闭
timeout /t 3
exit
) else (
echo 输入错误
goto :while_loop
)
结语
本文只是列举出工作中可能会用的指令。