HOWTO · Batch

使用批处理文件写入文本文件

本教程将讨论使用批处理脚本编写文本文件。

本页内容

在 Windows 命令提示符或 .bat 脚本中,使用 ECHO 和 > 可以创建文本文件或替换其内容;使用 >> 则可以保留现有内容并追加文本。下面的命令和输出示例保持原样,其中显示的英文文本仍为英文;正文会说明其含义。

创建新的文本文件

此脚本会在当前工作目录下向 myfile.txt 写入一行:

@echo off
echo This is my first line of text > myfile.txt

文件中写入的英文内容是 This is my first line of text。如果 myfile.txt 已存在,> 会替换其内容。若要写入其他位置,请使用完整目标路径,例如 C:\Users\YourName\Documents\myfile.txt;请确保目标目录已经存在。脚本运行时,@echo off 可以避免在屏幕上显示批处理命令。

追加内容到现有文本文件

如果要保留当前内容并在末尾添加一行,请使用 >>。下面这个独立示例会先创建一个已知内容的起始文件,再追加第二行;示例中的行文本保持英文:

@echo off
echo First line> myfile.txt
echo Added line>> myfile.txt

脚本运行后,文件中先是 First line,下一行是 Added line。之后每运行一次,都会再添加一行 Added line,不会替换之前的文本。第一条命令使用 > 来准备示例;如果要将脚本用于已有数据的文件,请删掉这条命令。

向文本文件写入多行

将多个 ECHO 命令放在括号中,然后只重定向整个命令组一次:

@echo off
(
echo First line
echo Second line
echo Third line
) > myfile.txt

每个命令都会写入单独的一行。该命令组使用 > 重定向,因此运行后,目标文件会被替换为示例中的三行内容;这些行在原样保留的示例中仍为英文。将 > 改为 >>,即可把这几行追加到现有内容之后。

在文本文件中使用变量

使用 SET 定义一个值,然后在写入行时用百分号括起变量名来展开它:

@echo off
set "myVariable=Hello from Batch"
echo %myVariable%> myfile.txt

文件中写入的英文内容是 Hello from Batch。用引号括住 SET 命令中的赋值,可以避免值末尾意外带上空格;这些引号不属于变量值。如果要把变量值追加到现有文件,请改用 >>。

将命令输出写入文本文件

可以重定向 DIR 等命令,将目录列表保存到文件:

@echo off
dir > directory_list.txt

这会在当前目录的列表写入 directory_list.txt,并在文件已存在时替换其内容。列表条目取决于计算机和当前工作目录,因此文件内容会有所不同;示例中由 DIR 生成的输出保持原样。使用 dir >> directory_list.txt 可以将新的目录列表追加到现有文本之后。

更新现有文本文件

根据任务中“更新”的具体含义选择运算符:>> 会添加新文本并保留已有行,而 > 会用该命令生成的文本替换文件内容。例如,echo Status: complete >> myfile.txt 会添加一行状态信息。如果需要修改某一特定行并保留其他内容,请使用专为这类操作设计的文件编辑工具。读取并重写文件的 FOR /F 循环并不是通用且安全的替换方法:它可能改动空行以及包含 Batch 特殊字符的文本。

常见问题

  1. 如何创建文本文件? 使用 ECHO 和 >;如果文件不存在就会创建,如果已存在则会替换其内容。
  2. 如何追加内容而不替换现有文本? 使用 >>。
  3. 如何写入多行? 将多个 ECHO 命令放在括号组成的命令块中,再重定向整个命令块。
  4. 一行中可以包含变量吗? 可以。用 SET 定义变量,并在 ECHO 命令中以 %variableName% 的形式展开。
  5. 如何保存命令的输出? 在命令后使用 > 或 >>,分别替换目标文件内容或追加到文件末尾。