Windows与网络基础-07-Windows基本命令-目录文件操作

目标:

掌握windwos系统文件及目录操作的一些命令

掌握windwos网络相关的命令

Window输入命令:使用命令提示符对话框cmd

命令行语法项

下表描述用于指示命令行语法的表示法。

表示法 说明
不含方括号或大括号的文本 必须按所显示键入的项。
<Text inside angle brackets> 必须为其提供值的占位符。
[Text inside square brackets] 可选项。
{Text inside braces} 一组必需的项。 你必须选择一个。
竖线 ( \| ) 互斥项的分隔符。 你必须选择一个。
省略号 (…) 可重复使用多次的项。

cd

  • 语法
  • 注解
  • 示例

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012

显示当前目录的名称,或更改当前目录。 如果仅与驱动器号 (, cd C:) , cd C: 将显示指定驱动器中的当前目录的名称。 如果不带参数使用, cd 将显示当前驱动器和目录。

备注:此命令与 chdir 命令相同。

语法

1
2
3
4
cd [/d] [<drive>:][<path>]
cd [..]
chdir [/d] [<drive>:][<path>]
chdir [..]

参数

参数 说明
/d 更改驱动器的当前驱动器以及当前目录。
<drive>: 指定要显示或更改驱动器的 ((如果不同于当前驱动器) 。
<path> 指定要显示或更改的目录的路径。
[..] 指定要更改为父文件夹。
/? 在命令提示符下显示帮助。

注解

如果启用了命令扩展,则以下条件适用于 cd 命令:

  • 当前目录字符串将转换为使用与磁盘上的名称相同的大小写。 例如, cd c:\temp 将当前目录设置为 C:(如果磁盘上是这种情况)。

  • 空格不被视为分隔符,因此 <path> 可以包含不带引号的空格。 例如:

    1
    cd username\programs\start menu

    相当于:

    1
    cd "username\programs\start menu"

    如果禁用扩展,则引号是必需的。

  • 若要禁用命令扩展,请键入:

    1
    cmd /e:off

示例

若要返回到根目录,请返回驱动器的目录层次结构的顶部:

1
cd\

更改驱动器上不同于你位于的驱动器上的默认目录:

1
cd [<drive>:[<directory>]]

若要验证对目录的更改,请键入:

1
cd [<drive>:]

dir

  • 语法
  • 示例

显示目录的文件和子目录的列表。 如果未使用参数,此命令将显示磁盘的卷标签和序列号,然后是磁盘上的目录和文件列表, (包括其名称和上次修改的日期和时间) 。 对于文件,此命令显示名称扩展名和大小(以字节为单位)。 此命令还显示列出的文件和目录总数、其累积大小以及磁盘上剩余的可用空间 (字节) 。

dir 命令还可以使用不同的参数从 Windows 恢复控制台运行。 有关详细信息,请参阅Windows恢复环境 (WinRE)

语法

1
dir [<drive>:][<path>][<filename>] [...] [/p] [/q] [/w] [/d] [/a[[:]<attributes>]][/o[[:]<sortorder>]] [/t[[:]<timefield>]] [/s] [/b] [/l] [/n] [/x] [/c] [/4] [/r]

参数

参数 说明
[<drive>:][<path>] 指定要在其中查看列表的驱动器和目录。
[<filename>] 指定要在其中查看列表的特定文件或文件组。
/p 一次显示一个列表的一个屏幕。 若要查看下一个屏幕,请按任意键。
/q 显示文件所有权信息。
/W 以宽格式显示列表,每行包含多达五个文件名或目录名称。
/d /w 相同的格式显示列表,但文件按列排序。
/a[[:]<attributes>] 仅显示具有指定属性的目录和文件的名称。 如果不使用此参数,该命令将显示除隐藏文件和系统文件之外的所有文件的名称。 如果在未指定任何 属性的情况下使用此参数,该命令将显示所有文件的名称,包括隐藏文件和系统文件。 可能的 属性值 列表包括:d - 目录h - 隐藏文件s - 系统文件l - 重新分析点r - 只读文件a - 准备存档的文件i - 非内容索引文件可以使用这些值的任何组合,但不要使用空格分隔值。 (可选)可以使用冒号 (:) 分隔符,也可以使用连字符 (-) 作为前缀来表示“not”。 例如,使用 -s 属性不会显示系统文件。
/o[[:]<sortorder>] 根据 sortorder 对输出进行排序,它可以是以下值的任意组合:n - 按名称按字母顺序排列e - 按扩展名按字母顺序排列g - 首先对目录进行分组s - 按大小,最先小d - 按日期/时间,最早-使用前缀反转排序顺序按列出这些值的顺序处理多个值。 不要使用空格分隔多个值,但可以选择使用冒号 (:) 。如果未指定 sortorderdir /o 按字母顺序列出目录,后跟按字母顺序排序的文件。
/t[[:]<timefield>] 指定要显示或用于排序的时间字段。 可用的 时间字段 值为:c - 创建a - 上次访问w - 上次写入
/s 列出指定目录和所有子目录中指定文件名的每个匹配项。
/b 显示目录和文件的裸列表,没有其他信息。 /b 参数替代 /w
/l 使用小写显示未排序的目录名称和文件名。
/n 在屏幕最右侧显示具有文件名的长列表格式。
/x 显示为非 8dot3 文件名生成的短名称。 显示与 /n 的显示相同,但短名称在长名称之前插入。
/c 以文件大小显示千位分隔符。 此选项为默认行为。 使用 /-c 隐藏分隔符。
/4 以四位数格式显示年份。
/r 显示文件的备用数据流。
/? 在命令提示符下显示帮助。

注解

  • 若要使用多个 文件名 参数,请使用空格、逗号或分号分隔每个文件名。

  • 可以使用通配符 (***** 或 ) 来表示文件名的一个或多个字符,以及显示文件或子目录的子集。

  • 可以使用通配符 *****替换任意字符串字符,例如:

    • dir *.txt 列出当前目录中以.txt开头的所有文件,例如 .txt、.txt1 .txt_old。
    • dir read *.txt 列出以读取开头的当前目录中的所有文件,以及以.txt开头的扩展,例如.txt、.txt1 或.txt_old。
    • dir read *.* 列出以任何扩展名开头的当前目录中的所有文件。

    星号通配符始终使用短文件名映射,因此可能会获得意外结果。 例如,以下目录包含两个文件 (t.txt2 和 t97.txt) :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    C:\test>dir /x
    Volume in drive C has no label.
    Volume Serial Number is B86A-EF32

    Directory of C:\test

    11/30/2004 01:40 PM <DIR> .
    11/30/2004 01:40 PM <DIR> ..
    11/30/2004 11:05 AM 0 T97B4~1.TXT t.txt2
    11/30/2004 01:16 PM 0 t97.txt

    你可能需要键入 dir t97\* 将返回文件t97.txt。 但是,键入 dir t97\* 将返回这两个文件,因为星号通配符使用其短名称映射 T97B4~1.TXT匹配文件 t.txt2 到t97.txt。 同样,键入 del t97\* 将删除这两个文件。

  • 可以使用问号 (?) 作为名称中单个字符的替代项。 例如,键入 dir read???.txt 列表当前目录中以读取开头且后跟最多三个字符的.txt扩展名的文件。 这包括Read.txt、Read1.txt、Read12.txt、Read123.txt和Readme1.txt,但不包括Readme12.txt。

  • 如果在属性中使用 /a 具有多个值,则此命令仅显示具有所有指定属性的文件的名称。 例如,如果使用 /a和-h 作为属性 (使用或 /a:r-h``/ar-h) ,则此命令将仅显示不隐藏的只读文件的名称。

  • 如果指定多个 排序程序 值,则此命令按第一个条件对文件名进行排序,然后按第二个条件等进行排序。 例如,如果将 /o排序排序 (/o:e-s``/oe-s) 的 e-s 参数一起使用,则此命令会按扩展名对目录和文件的名称进行排序,并首先显示最终结果。 按扩展名排序的字母顺序会导致没有扩展名的文件名首先出现,然后显示目录名称,然后使用扩展名的文件名。

  • 如果使用重定向符号 (>) 将此命令的输出发送到文件,或者如果使用管道 (|) 将此命令的输出发送到另一个命令,则必须使用 /a:-d/b 仅列出文件名。 可以将 文件名/b/s 一起使用,以指定此命令是搜索当前目录及其子目录来查找与文件名匹配的所有 文件名。 对于找到的每个文件名,此命令仅列出驱动器号、目录名称、文件名和文件扩展名 (每行一个路径) 。 在使用管道将此命令的输出发送到另一个命令之前,应在 Autoexec.nt 文件中设置 TEMP 环境变量。

示例

若要按字母顺序显示所有目录,按宽格式显示,并在每个屏幕后暂停,请确保根目录是当前目录,然后键入:

1
dir /s/w/o/p

输出列出了根目录、子目录和根目录中的文件,包括扩展。 此命令还会列出树中每个子目录中的子目录名称和文件名。

若要更改前面的示例,以便 dir 显示文件名和扩展名,但省略目录名称,请键入:

1
dir /s/w/o/p/a:-d

若要打印目录列表,请键入:

1
dir > prn

指定 prn 时,目录列表将发送到附加到 LPT1 端口的打印机。 如果打印机附加到其他端口,则必须将 prn 替换为正确的端口的名称。

还可以将 dir 命令的输出重定向到文件,方法是将 prn 替换为文件名。 还可以键入路径。 例如,若要将 dir 输出定向到记录目录中的文件dir.doc,请键入:

1
dir > \records\dir.doc

如果dir.doc不存在, 则 dir 会创建该目录,除非 记录 目录不存在。 在这种情况下,将显示以下消息:

1
File creation error

若要在驱动器 C 上的所有目录中显示具有.txt扩展名的所有文件名的列表,请键入:

1
dir c:\*.txt /w/o/s/p

dir 命令以宽格式显示每个目录中匹配文件名的按字母顺序排列的列表,每次屏幕填充时都会暂停,直到按任何键继续。

mkdir

  • 语法
  • 示例

创建目录或子目录。 默认情况下启用的命令扩展允许你使用单个 mkdir 命令在指定路径中创建中间目录。

备注:此命令与 md 命令相同。

语法

1
mkdir [<drive>:]<path>

参数

参数 说明
<drive>: 指定要在其上创建新目录的驱动器。
<path> 指定新目录的名称和位置。 任何单个路径的最大长度由文件系统确定。 这是必需参数。
/? 在命令提示符下显示帮助。

示例

若要在当前目录中创建名为 Directory1 的目录,请键入:

1
mkdir Directory1

若要在启用了命令扩展的情况下在根目录中创建目录树 *Taxes,请键入:

1
mkdir \Taxes\Property\Current

如前面的示例所示,若要在根目录中创建目录树 *Taxes,但禁用了命令扩展,请键入以下命令序列:

1
2
3
mkdir \Taxes
mkdir \Taxes\Property
mkdir \Taxes\Property\Current

rmdir

  • 语法
  • 示例

删除目录。

rmdir 命令还可以使用不同的参数从 Windows 恢复控制台运行。 有关详细信息,请参阅Windows恢复环境 (WinRE)

备注:此命令与 rd 命令相同。

语法

1
rmdir [<drive>:]<path> [/s [/q]]

参数

参数 说明
[<drive>:]<path> 指定要删除的目录的位置和名称。 路径 是必需的。 如果在指定 路径的开头包含反斜杠 () ,则 路径 从根目录开始 (,而不考虑当前目录) 。
/s 删除 (指定目录及其所有子目录的目录树,包括所有文件) 。
/q 指定安静模式。 删除目录树时不提示确认。 仅当指定 /s,/q 参数才有效。谨慎: 在安静模式下运行时,将删除整个目录树,无需确认。 在使用 /q 命令行选项之前,请确保移动或备份重要文件。
/? 在命令提示符下显示帮助。

注解

  • 无法删除包含文件(包括隐藏文件或系统文件)的目录。 如果尝试这样做,将显示以下消息:

    The directory is not empty

    使用 dir /a 命令列出所有 (的文件,包括隐藏文件和系统文件) 。 然后使用 attrib 命令和 -h 删除隐藏的文件属性、删除系统文件属性的 -s-h -s 删除隐藏和系统文件属性。 删除隐藏属性和文件属性后,可以删除文件。

  • 无法使用 rmdir 命令删除当前目录。 如果尝试删除当前目录,将显示以下错误消息:

    The process can't access the file because it is being used by another process.

    如果收到此错误消息,则必须更改为其他目录, (不是当前目录的子目录) ,然后重试。

示例

若要更改为父目录,以便可以安全地删除所需的目录,请键入:

1
cd ..

若要从当前目录中删除名为 test (及其所有子目录和文件) 的目录,请键入:

1
rmdir /s test

若要以安静模式运行上一个示例,请键入:

1
rmdir /s /q test

del

  • 语法
  • 示例

删除一个或多个文件。 此命令执行与 擦除 命令相同的操作。

备注

此命令与erase命令相同。

del 命令还可以使用不同的参数从 Windows 恢复控制台运行。 有关详细信息,请参阅Windows恢复环境 (WinRE)

警告

如果使用 del 从磁盘中删除文件,则无法检索它。

语法

1
2
del [/p] [/f] [/s] [/q] [/a[:]<attributes>] <names>
erase [/p] [/f] [/s] [/q] [/a[:]<attributes>] <names>

参数

参数 说明
<names> 指定一个或多个文件或目录的列表。 通配符可用于删除多个文件。 如果指定了目录,将删除该目录中的所有文件。
/p 在删除指定文件之前提示确认。
/f 强制删除只读文件。
/s 从当前目录和所有子目录中删除指定的文件。 在删除文件时显示文件的名称。
/q 指定安静模式。 系统不会提示你进行删除确认。
/a[:]<attributes> 基于以下文件属性删除文件:r 只读文件h 隐藏文件i 非内容索引文件s 系统文件准备存档的文件l Reparse 点- 用作前缀,表示“not”.
/? 在命令提示符下显示帮助。

注解

  • 如果使用该 del /p 命令,将看到以下消息:

    FileName, Delete (Y/N)?

    若要确认删除,请按 Y。若要取消删除并显示下一个文件名 ((如果指定了一组文件) ,请按 N。若要停止 del 命令,请按 Ctrl+C。

  • 如果禁用命令扩展, /s 参数将显示未找到的任何文件的名称,而不是显示正在删除的文件的名称。

  • 如果在参数中 <names> 指定特定文件夹,也会删除所有包含的文件。 例如,如果要删除 *文件夹中的所有文件,请键入:

    1
    del \work
  • 可以使用通配符 (***** 和 ) 一次删除多个文件。 但是,为了避免无意中删除文件,应谨慎使用通配符。 例如,如果键入以下命令:

    1
    del *.*

    del 命令显示以下提示:

    Are you sure (Y/N)?

    若要删除当前目录中的所有文件,请按 Y ,然后按 Enter。 若要取消删除,请按 N ,然后按 Enter。

    备注

    在将通配符与 del 命令一起使用之前,请使用与 dir 命令相同的通配符列出要删除的所有文件。

示例

若要删除名为“在驱动器 C 上测试”的文件夹中的所有文件,请键入以下任一项:

1
2
del c:\test
del c:\test\*.*

若要删除文件夹名称中具有空格的文件夹中的所有文件,需要用双引号包装完整路径。 键入以下任一项:

1
2
del "c:\test folder\"
del "c:\test folder\*.*"

若要从当前目录中删除具有.bat文件扩展名的所有文件,请键入:

1
del *.bat

若要删除当前目录中的所有只读文件,请键入:

1
del /a:r *.*

move

将一个或多个文件从一个目录移到另一个目录。

将加密文件移动到不支持 EFS 加密文件系统 (的) 将导致错误。 必须先解密文件,或将它们移动到支持 EFS 的卷。

语法

1
move [{/y|-y}] [<source>] [<target>]

参数

参数 说明
/y 停止提示确认要覆盖现有目标文件。 此参数可能在 COPYCMD 环境变量中预设。 可以使用 -y 参数重写 预设。 默认情况下,除非从批处理脚本中运行命令,否则在覆盖文件之前提示。
-y 开始提示确认是否要覆盖现有目标文件。
<source> 指定要移动的文件的路径 () 名称。 若要移动或重命名目录, 应为当前目录路径和名称。
<target> 指定要移动文件的路径和名称。 若要移动或重命名目录, 目标应为所需的 目录路径和名称。
/? 在命令提示符下显示帮助。

示例

若要将扩展.xls 文件从 目录移动到 _Q目录,请键入:

1
move \data\*.xls \second_q\reports\

copy

  • 语法
  • 示例

将一个或多个文件从一个位置复制到另一个位置。

备注

还可以从恢复控制台使用 包含 不同参数的 copy 命令。 有关恢复控制台详细信息,请参阅 Windows Recovery Environment (Windows RE)

语法

1
copy [/d] [/v] [/n] [/y | /-y] [/z] [/a | /b] <source> [/a | /b] [+<source> [/a | /b] [+ ...]] [<destination> [/a | /b]]

参数

参数 说明
/d 允许复制的加密文件保存为目标中的解密文件。
/v 验证新文件是否写入正确。
/n 复制名称超过八个字符的文件或文件扩展名长于三个字符的文件时,使用短文件名(如果可用)。
/y 禁止提示确认是否要覆盖现有目标文件。
/-y 提示确认是否要覆盖现有目标文件。
/z 以可重启模式复制联网文件。
/a 指示 ASCII 文本文件。
/b 指示二进制文件。
<source> 必需。 指定要从其中复制文件或文件集的位置。 可以包含驱动器号和冒号、目录名称、文件名或它们的组合。
<destination> 必需。 指定要复制文件或一组文件的位置。 目标 可以包含驱动器号和冒号、目录名称、文件名或它们的组合。
/? 在命令提示符下显示帮助。

注解

  • 可以使用 CTRL+Z (复制使用文件结尾字符的 ASCII 文本文件) 以指示文件结尾。

  • 如果 /a 位于命令行上的文件列表之前或之后,它将应用于列出的所有文件,直到 copy 遇到 /b。 在这种情况下, /b 适用于 / b 前面的文件

    /a 的效果取决于其在命令行字符串中的位置:- 如果 /a 遵循源,则 copy 命令将文件视为 ASCII 文件,并复制文件第一个结尾字符 (CTRL+Z) 之前的数据。 - 如果 /a 遵循 目标则 copy 命令会将文件结尾字符 (CTRL+Z) 作为文件的最后一个字符。

  • 如果 /b 指示命令解释器读取目录中文件大小指定的字节数。 /b 是 copy 的 默认值,除非 copy 合并了文件。

  • 如果 /b 位于命令行上的文件列表之前或之后,它将应用于所有列出的文件,直到 copy 遇到 /a。 在这种情况下, /a 适用于 / a 前面的文件

    /b 的效果取决于其在命令行字符串中的位置: - 如果 /b 在源之后,copy 命令将复制整个文件,包括任何文件结尾字符 (CTRL+Z) 。 - 如果 /b 遵循 目标则 copy 命令不会在 CTRL+Z (添加文件) 。

  • 如果无法验证写入操作,则会显示错误消息。 尽管复制命令很少出现 记录错误, 但可以使用 /v 验证是否正确记录关键数据。 /v 命令行选项也会减慢复制命令的速度,因为必须检查磁盘上记录的每个扇区。

  • 如果在 COPYCMD 环境变量中预设了 /y,则可以通过在命令行使用 /-y 来替代此设置。 默认情况下,除非在批处理脚本中执行 复制 命令,否则替换此设置时系统会提示你。

  • 若要追加文件,请为目标指定单个文件,但源文件 ( 使用通配符或 file1file2file3 格式) 。

  • 如果在复制阶段断开连接 (例如,如果服务器脱机中断了连接) ,可以在重新建立连接后使用 copy /z 来恢复连接。 /z 选项还显示每个文件完成的复制操作百分比。

  • 可以将设备名称替换为源或目标中的一*个或多个**匹配项*。

  • 如果 destination 是设备 (例如 Com1 或 Lpt1) ,则 /b 选项以二进制模式将数据复制到设备。 在二进制模式下,复制 /b (包括特殊字符(如 CTRL+C、CTRL+S、CTRL+Z 和 ENTER) )作为数据复制到设备。 但是,如果省略 /b,数据会在 ASCII 模式下复制到设备。 在 ASCII 模式下,特殊字符可能会导致文件在复制过程中合并。

  • 如果未指定目标文件,则创建的副本的名称、修改日期和修改时间与原始文件相同。 新副本存储在当前驱动器上的当前目录中。 如果源文件位于当前驱动器和当前目录中,并且未为目标文件指定其他驱动器或目录, 则 copy 命令将停止并显示以下错误消息:

    1
    2
    File cannot be copied onto itself
    0 File(s) copied
  • 如果在源中指定多个文件,copy 命令会使用目标中指定的文件名将它们合并到单个文件中copy 命令假定合并的文件是 ASCII 文件,除非使用 /b 选项。

  • 若要复制 0 字节长的文件,或复制目录的所有文件和子目录,请使用 xcopy 命令

  • 若要在不修改文件的情况下将当前时间和日期分配给文件,请使用以下语法:

    1
    copy /b <source> +,,

    其中,逗号指示 目标 参数已被有意省略。

示例

若要将名为 memo.doc 的文件复制到letter.doc驱动器中的文件,并确保文件结尾字符 (CTRL+Z) 位于复制的文件的末尾,请键入:

1
copy memo.doc letter.doc /a

若要将名为 robin.typ 的文件从当前驱动器和目录复制到位于驱动器 C 上的名为 "一 文"的现有目录,请键入:

1
copy robin.typ c:\birds

备注

如果 "云 "目录不存在,则 文件 robin.typ 将复制到名为 "可 操作"的文件中,该文件位于驱动器 C 中磁盘的根目录中。

若要合并位于当前目录中的 Mar89.rptMay89.rptMay89.rpt,并将它们放在也位于当前目录) 的名为 Report (的文件中,请键入:

1
copy mar89.rpt + apr89.rpt + may89.rpt Report

备注

如果合并文件, copy 命令会使用当前日期和时间标记目标文件。 如果省略 目标,则文件将合并并存储在列表中第一个文件的名称下。

若要合并 Report 中所有 文件,当名为 Report 的文件已存在时,请键入:

1
copy report + mar89.rpt + apr89.rpt + may89.rpt

若要将当前目录中扩展名为 .txt 的所有文件合并到名为 Combined.doc文件中, 请键入:

1
copy *.txt Combined.doc

若要使用通配符将多个二进制文件合并到一个文件中,请包括 /b。 这可以防止Windows CTRL+Z 视为文件结尾字符。 例如,键入:

1
copy /b *.exe Combined.exe

注意

如果合并二进制文件,则生成的文件可能由于内部格式设置而不可用。

  • 将具有扩展名的每个文件.txt其相应的 .ref 文件创建一个文件名相同但扩展名.doc文件。 Copy 命令将file1.txt与 file1.ref 组合file1.doc,然后该命令将 file2.txtfile2.ref 组合在一起file2.doc,以此类比 例如,键入:
1
copy *.txt + *.ref *.doc

若要将所有文件与 .txt合并,然后将具有 .ref 扩展名的所有文件合并到名为 Combined.doc文件中, 请键入:

1
copy *.txt + *.ref Combined.doc

xcopy

  • 语法
  • 注解
  • 示例

复制文件和目录,包括子目录。

语法

1
Xcopy <Source> [<Destination>] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d [:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:FileName1[+[FileName2]][+[FileName3]]] [{/y | /-y}] [/z] [/b] [/j] [/compress]

参数

参数 说明
<数据源> 必需。 指定要复制的文件的位置和名称。 此参数必须包括驱动器或路径。
[<目标>] 指定要复制的文件的目标。 此参数可以包括驱动器号和冒号、目录名称、文件名或它们的组合。
/W 显示以下消息,并在开始复制文件之前等待响应: 按任意键开始复制文件 ()
/p 提示你确认是否要创建每个目标文件。
/c 忽略错误。
/v 验证每个文件是否写入目标文件,以确保目标文件与源文件相同。
/q 禁止显示 xcopy 消息。
/f 复制时显示源和目标文件名。
/l 生成要复制的文件列表,但不主动复制文件。
/g 当目标不支持加密时,创建解密 的目标 文件。
/d [:MM-DD-YYYY] 仅复制指定日期或之后更改的源文件。 如果未包含 MM-DD-YYYYY 值,xcopy则复制比现有目标文件更新的所有源文件。 此命令行选项允许更新已更改的文件。
/U 仅从目标上存在的复制文件。
/i 如果 是目录或包含通配符和 目标 不存在, xcopy 则假定 目标 指定目录名称并创建新目录。 然后, xcopy 将所有指定的文件复制到新目录中。 默认情况下, xcopy 系统会提示指定 目标 是文件还是目录。
/s 复制目录和子目录,除非它们为空。 如果省略 /sxcopy 可在单个目录中工作。
/e 复制所有子目录,即使它们为空也是如此。 将 /e/s/t 命令行选项配合使用。
/t 复制子目录结构 (,即树) ,而不是文件。 若要复制空目录,必须包含 /e 命令行选项。
/k 复制文件,并在 目标 文件上保留只读属性(如果 源文件 上存在)。 默认情况下, xcopy 删除只读属性。
/r 复制只读文件。
/h 复制具有隐藏文件和系统文件属性的文件。 默认情况下, xcopy 不复制隐藏文件或系统文件
/a 仅复制其存档文件属性设置的 源文件/a 不修改源文件的存档文件属性。 有关如何使用 attrib 设置存档文件属性的信息,请参阅 其他引用
/m 复制设置了存档文件属性的 源文件 。 与 /a 不同, /m 关闭源中指定的文件中的存档文件属性。 有关如何使用 attrib 设置存档文件属性的信息,请参阅 其他引用
/n 使用 NTFS 短文件或目录名称创建副本。 将文件或目录从 NTFS 卷复制到 FAT 卷或 FAT 文件系统命名约定 ((即目标文件系统上需要 8.3 个字符) )时,需要 /n。 *命中** 文件系统可以是 FAT 或 NTFS。
/o 复制文件所有权和自由访问控制列表 (DACL) 信息。
/x 复制文件审核设置和系统访问控制列表 (SACL) 信息, (暗示 /o) 。
/exclude:FileName1[+[FileName2]][+[FileName3] ( ) ] 指定文件列表。 必须至少指定一个文件。 每个文件将包含搜索字符串,其中每个字符串位于文件中的单独行上。 当任一字符串与要复制的文件绝对路径的任何部分匹配时,将排除该文件被复制。 例如,指定字符串 obj 将排除目录 obj 下的所有文件或 扩展名为 .obj 的所有文件。
/y 禁止提示确认要覆盖现有目标文件。
/-y 提示确认要覆盖现有目标文件。
/z 在可重启模式下通过网络复制。
/b 复制符号链接而不是文件。 此参数是在 Windows Vista® 中引入的。
/j 在不缓冲的情况下复制文件。 建议用于非常大的文件。 此参数已在 Windows Server 2008 R2 中添加。
/compress 在文件传输期间请求网络压缩(如果适用)。
/? 在命令提示符下显示帮助。

注解

  • 使用 /z

    例如,如果在复制阶段丢失连接 (,则服务器脱机会断开连接) ,则重新建立连接后会恢复。 /z 还显示每个文件完成的复制操作百分比。

  • 在 COPYCMD 环境变量中使用 /y

    可以在 COPYCMD 环境变量中使用 /y 。 可以在命令行上使用 /-y 重写此命令。 默认情况下,系统会提示你覆盖。

  • 复制加密的文件

    将加密文件复制到不支持 EFS 的卷会导致错误。 首先解密文件,或将文件复制到支持 EFS 的卷。

  • 追加文件

    若要追加文件,请为目标指定单个文件,但源 (的多个文件,即使用通配符或 file1+file2+file3 格式) 。

  • 目标默认值

    如果省略 目标,该 xcopy 命令会将文件复制到当前目录。

  • 指定 目标 是文件还是目录

    如果 目标 不包含现有目录,并且不以反斜杠 () 结尾,将显示以下消息:

    1
    Does <Destination> specify a file name or directory name on the target(F = file, D = directory)?

如果希望将文件或文件复制到文件,请按 F。 如果希望将文件或文件复制到目录,请按 D。

可以使用 /i 命令行选项禁止显示此消息,这会导致 xcopy 假定目标是目录(如果源是多个文件或目录)。

  • xcopy使用命令设置目标文件的存档属性

    xcopy 命令使用存档属性集创建文件,无论此属性是否在源文件中设置。 有关文件属性和 attrib 的详细信息,请参阅 其他引用

  • 比较 **xcopy**diskcopy

    如果磁盘包含子目录中的文件,并且想要将其复制到具有不同格式的磁盘,请使用 xcopy 命令而不是 diskcopy。 由于 diskcopy 命令按跟踪复制磁盘,因此源磁盘和目标磁盘的格式必须相同。 该 xcopy 命令没有此要求。 除非需要完整的磁盘映像副本,否则使用 xcopy

  • 退出代码 xcopy

    若要处理返回的xcopy退出代码,请使用批处理程序中的 if 命令行上的 ErrorLevel 参数。 有关使用 if 处理退出代码的批处理程序的示例,请参阅 “其他引用”。 下表列出了每个退出代码和说明。

    退出代码 说明
    0 文件被复制时没有错误。
    1 未找到要复制的文件。
    2 用户按 Ctrl+C 终止 xcopy
    4 出现初始化错误。 内存或磁盘空间不足,或者你在命令行上输入了无效的驱动器名称或语法无效。
    5 发生磁盘写入错误。

示例

1. 若要复制所有文件和子目录, (包括从驱动器 A 到驱动器 B 的任何空子目录) ,请键入:

1
xcopy a: b: /s /e

2. 若要在前面的示例中包括任何系统或隐藏文件,请添加 /h 命令行选项,如下所示:

1
xcopy a: b: /s /e /h

3. 若要使用自 1993 年 12 月 29 日以来更改的 目录中的文件更新 目录中的文件,请键入:

1
xcopy \rawdata \reports /d:12-29-1993

4. 若要更新上一示例中 中存在的所有文件,无论日期如何,请键入:

1
xcopy \rawdata \reports /u

5. 若要获取要由上一个命令复制的文件列表, (,无需实际复制文件) ,请键入:

1
xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out

文件 xcopy.out 列出了要复制的每个文件。

6. 若要将 目录和所有子目录复制到网络驱动器 H:上的目录 \Public,请保留只读属性,并在 H:上创建新文件时提示,键入:

1
xcopy \customer h:\public\address /s /e /k /p

7. 若要发出上一个命令,请确保创建 xcopy 目录(如果不存在),并禁止显示创建新目录时显示的消息,请添加 /i 命令行选项,如下所示:

1
xcopy \customer h:\public\address /s /e /k /p /i

8. 可以创建批处理程序来执行 xcopy 操作,并在发生错误时使用批处理( 如果 命令处理退出代码)。 例如,以下批处理程序对源参数和目标参数使用可替换参数 xcopy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
rem COPYIT.BAT transfers all files in all subdirectories of
rem the source drive or directory (%1) to the destination
rem drive or directory (%2)
xcopy %1 %2 /s /e
if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit
:lowmemory
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax.
goto exit
:abort
echo You pressed CTRL+C to end the copy operation.
goto exit
:exit

若要使用前面的批处理程序复制 C:目录中的所有文件及其子目录以驱动 B,请键入:

1
copyit c:\prgmcode b:

命令解释器将 C:* 替换为 %1B:** 对于 %2,然后使用 xcopy/e/s 命令行选项。 如果 xcopy 遇到错误,批处理程序将读取退出代码,并转到相应的 IF ERRORLEVEL 语句中指示的标签,然后显示相应的消息并退出批处理程序。

9. 本示例复制所有非空目录,以及星号符号后具有关联文件扩展名的文件。

1
2
3
4
5
6
7
xcopy .\toc*.yml ..\..\Copy-To\ /S /Y

rem Output example.
rem .\d1\toc.yml
rem .\d1\d12\toc.yml
rem .\d2\toc.yml
rem 3 File(s) copied

在前面的示例中,此特定源参数值 .*.yml 会复制相同的 3 个文件,即使删除了两个路径字符 。** 也是如此。 但是,如果从源参数中删除星号通配符,则不会复制任何文件,使其只是 ..yml**。