1

我有两个文本文件。我想将 file1.txt 的四行内容附加到 file2.txt 的前四行。这必须覆盖 file2.txt 前四行的所有记录,但保留原始内容的其余部分(其他行)。

如何使用批处理或 Windows 提示符来做到这一点?

4

6 回答 6

3
copy file1.txt temp.txt
echo. >> temp.txt
more +5 file2.txt >> temp.txt
move /y temp.txt file2.txt

编辑:添加了“echo.>> temp.txt”指令,它应该在 temp.txt 中添加一个换行符,从而允许 file2.txt 的“干净”合并(如果 file1.txt 不以换行符结尾) .

于 2009-04-01T14:22:00.307 回答
1

如果你从 Gnutils 中获取 coreutils,你将能够做很多你可以用 Cygwin 做的事情,而无需安装 cygwin。然后你可以使用 head、tail 和 cat 之类的东西,它们可以让你做你想做的事情。

例如

head -n 4 file2.txt

获取file2的前四行。

从上面链接的页面中提取 zip,然后从 bin 目录中获取您需要使用的任何实用程序,并将它们放在路径中的目录中 - 例如,对于下面您想要 mv、head 和 tail 的目录。您可以使用内置的 DOS 移动命令,但您需要稍微更改选项。

这个问题有点不清楚,但是如果您要删除 file2.txt 的前四行并将它们附加到 file1.txt 中,您可以执行以下操作:

head -n 4 file2.txt >> file1.txt
tail -n +5 file2.txt >> temp.txt
mv temp.txt file2.txt
于 2009-04-01T14:15:55.080 回答
1

除非两个文件开头的四行占用完全相同的空间,否则你不能不重写整个文件。

您不能在任意点向文件中插入或删除数据 - 您可以覆盖现有数据(逐个字节)、截断文件或追加到末尾,但不能删除或插入到中间。

所以基本上你需要:

  • 启动一个由前四行 file1.txt 组成的新文件
  • 跳过 file2.txt 的前四行
  • 将 file1.txt 的其余部分附加到新的 file2.txt

您可以使用来自 Unix 的 head/tail 命令相当容易地做到这一点,如果这是一个可接受的解决方案,您可以从Cygwin获得。Windows Services for Unix的 head/tail 很可能也可以工作。

于 2009-04-01T14:05:46.713 回答
1

仅使用批处理,我不确定您是否可以做到。

使用 Unix 命令,您可以 -- 并且可以在 Windows 下使用Cygwin轻松使用 Unix 命令。

在这种情况下,您想要:

#!/bin/bash
head -n 4 file1.txt > result.txt   # first 4 lines of file1
tail -n +5 file2.txt >> result.txt # append lines 5, 6, 7... of file2
mv result.txt file2.txt    # replace file2.txt with the result
于 2009-04-01T14:08:30.387 回答
0

如果你用 Windows 批处理以外的东西编写脚本,你可以做到这一点。带有windows脚本主机的vbscript或jscript应该可以做到。它们中的每一个都有一种方法来从一个文件中获取行并覆盖另一个文件的行。

于 2009-04-01T14:09:25.737 回答
0

您可以通过创建一个临时的第三个文件来做到这一点,从第一个文件中提取行并将它们添加到临时文件中,然后读取第二个文件,并在读取四个回车/换行对后,将其余部分写入临时文件. 然后,删除第二个文件并将临时文件重命名为第二个文件名。

于 2009-04-01T14:09:34.113 回答