ZetCode

Windows 命令提示符文件操作

最后修改于 2025 年 7 月 14 日

文件操作是使用 Windows 命令提示符的基础。它们允许您创建、修改、组织和删除文件及目录。掌握这些命令对于高效的系统管理至关重要。本教程将通过实际示例涵盖所有主要的文件操作。

命令提示符提供了强大的文件管理功能。与图形界面不同,cmd 允许批量处理文件。这使其非常适合自动化重复性的文件任务。通过命令执行许多操作比通过 GUI 更快。

基本文件操作包括创建、复制、移动和删除文件。高级操作涉及搜索、比较和修改文件属性。所有这些都可以通过简单的命令行指令来完成。我们将通过清晰的示例和解释来探讨每一个。

理解文件路径对于命令行文件操作至关重要。Windows 支持绝对路径(完整路径)和相对路径。路径可以引用当前目录(.)或父目录(..)。正确的路径指定可确保命令指向正确的文件。

基本定义

在深入示例之前,让我们定义关键术语和概念。这些构成了理解文件操作的基础。

文件系统:Windows 用于在存储上组织文件的方法。它由层次结构组织的目录(文件夹)和文件组成。NTFS 文件系统是现代 Windows 安装的标准。

当前目录:命令执行的工作目录。Cmd 在提示符 (C:\Users\Name>) 中显示此内容。使用 cd 命令更改当前目录。

路径:文件系统中文件或目录的地址。绝对路径从根目录开始 (C:\Folder\file.txt)。相对路径基于当前目录 (..\file.txt)。

通配符:匹配多个文件的特殊字符。星号 (*) 匹配任何字符序列。问号 (?) 匹配任何单个字符。

重定向:更改命令输入/输出的去向。> 符号将输出重定向到文件(覆盖)。>> 符号将输出追加到文件。

创建和查看文件

创建和查看文件是最基本的操作之一。Cmd 提供了几种创建带内容文件的方法。type 命令直接在控制台中显示文件内容。

create_view.bat
@echo off
echo Creating sample files...
echo First line > file1.txt
echo Second line >> file1.txt
echo Another file > file2.txt
type file1.txt

此脚本演示了文件创建和内容查看。它以两种不同的方法创建了两个文本文件。type 命令显示 file1.txt 的内容。

echo First line > file1.txt

创建 file1.txt,内容为“First line”。> 操作符创建新文件或覆盖现有文件。这是创建小型文本文件的最简单方法。

echo Second line >> file1.txt

将“Second line”追加到 file1.txt。>> 操作符将内容添加到现有内容,而不是覆盖。这对于日志记录或累积输出很有用。

type file1.txt

在控制台中显示 file1.txt 的内容。type 命令是查看文件内容的主要方法。对于大文件,请使用 | more 进行分页输出。

C:\>create_view.bat
Creating sample files...
First line
Second line

输出显示了创建过程和文件内容。由于我们使用了 > 和 >> 操作符,因此显示了两行。

复制和移动文件

复制和移动文件是文件管理的关键。copy 命令复制文件,而 move 命令传输文件。两者都支持通配符进行批量操作。

copy_move.bat
@echo off
mkdir source
mkdir destination
echo Test file > source\original.txt
copy source\original.txt destination\copy.txt
move source\original.txt destination\moved.txt
dir destination

此脚本演示了目录之间的文件复制和移动。它为操作创建了源目录和目标目录。最后,它列出了目标目录的内容。

copy source\original.txt destination\copy.txt

将 original.txt 从源复制到目标,并重命名为 copy.txt。copy 命令需要源和目标参数。像 *.txt 这样的通配符可以一次复制多个文件。

move source\original.txt destination\moved.txt

将 original.txt 从源移动到目标,并重命名为 moved.txt。Move 在成功传输后会删除原始文件。与 copy 一样,它支持通配符进行批量操作。

dir destination

列出目标目录的内容。这可以验证复制和移动操作都已成功。输出应显示 copy.txt 和 moved.txt。

C:\>copy_move.bat
 Volume in drive C is OS
 Volume Serial Number is ABCD-EFGH

 Directory of C:\destination

02/15/2025  01:30 PM                10 copy.txt
02/15/2025  01:30 PM                10 moved.txt
               2 File(s)             20 bytes

输出确认两个文件都存在于目标位置。文件大小和日期将与原始创建时间匹配。

删除文件和目录

删除文件和目录需要谨慎使用命令。del 命令删除文件,rd 命令删除目录。这些操作是永久性的——无法恢复到回收站。

delete_remove.bat
@echo off
mkdir to_delete
echo File1 > to_delete\file1.txt
echo File2 > to_delete\file2.txt
del to_delete\*.txt
rd to_delete

此脚本创建了一个包含文件的目录,然后进行清理。它演示了安全地删除文件,然后删除目录。操作是顺序的且相互依赖的。

del to_delete\*.txt

删除 to_delete 目录中所有 .txt 文件。* 通配符匹配所有以 .txt 扩展名的文件名。使用 /q 进入静默模式(无确认提示)。

rd to_delete

删除空的 to_delete 目录。默认情况下,rd 命令仅适用于空目录。添加 /s /q 可强制删除非空目录。

C:\>delete_remove.bat
C:\to_delete\*.txt
Are you sure (Y/N)? y

输出显示了删除确认提示。如果成功,目录删除会静默进行。如果操作失败(例如,文件仍然存在),则会出现错误。

文件属性和权限

文件属性控制可见性和访问权限。attrib 命令显示和修改文件属性。属性包括只读、隐藏、系统和存档。

attributes.bat
@echo off
echo Test file > test.txt
attrib test.txt
attrib +h +r test.txt
attrib test.txt
attrib -h -r test.txt

此脚本演示了属性操作。它创建了一个测试文件,显示了初始属性,修改了它们,然后恢复了原始设置。每个步骤都经过验证。

attrib test.txt

显示 test.txt 的当前属性。输出显示了设置属性的字母代码。没有字母表示没有设置特殊属性。

attrib +h +r test.txt

向 test.txt 添加隐藏 (h) 和只读 (r) 属性。+ 操作符添加属性,而 - 删除属性。可以在一个命令中修改多个属性。

attrib -h -r test.txt

从 test.txt 中删除隐藏和只读属性。这将文件恢复到其原始状态。系统 (s) 和存档 (a) 属性的工作方式类似。

C:\>attributes.bat
A        C:\test.txt
A  R  H  C:\test.txt
A        C:\test.txt

输出显示了属性更改。'A' 表示存档位已设置。当 R 和 H 属性处于活动状态时会出现,然后消失。

搜索和比较文件

查找和比较文件是强大的 cmd 功能。find 命令在文件中搜索文本字符串。fc 命令比较文件以识别差异。

search_compare.bat
@echo off
echo Apples > fruits.txt
echo Oranges >> fruits.txt
echo Bananas >> fruits.txt
find "range" fruits.txt
echo A different line > compare1.txt
echo Another different line > compare2.txt
fc compare1.txt compare2.txt

此脚本演示了文本搜索和文件比较。它创建了一个用于搜索的示例文件和两个用于比较的文件。这两种操作都提供了有关匹配/差异的详细输出。

find "range" fruits.txt

在 fruits.txt 中搜索包含“range”的行。命令默认区分大小写(/i 忽略大小写)。它会输出匹配的行以及行号。

fc compare1.txt compare2.txt

逐字节比较 compare1.txt 和 compare2.txt。fc(文件比较)命令会突出显示所有差异。使用 /b 进行二进制比较或 /n 显示行号。

C:\>search_compare.bat

---------- FRUITS.TXT
Oranges

Comparing files compare1.txt and compare2.txt
***** compare1.txt
A different line
***** compare2.txt
Another different line
*****

输出显示搜索找到了包含“range”的“Oranges”。比较清晰地显示了文件之间的不同行。

来源

Windows 命令参考

本教程涵盖了命令提示符的基本文件操作。练习这些命令以熟练掌握通过 cmd 进行文件管理。将它们组合在脚本中以自动化复杂的文件管理任务。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。至今,我已撰写了超过 1400 篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。