我有两个文本文件。我想获取file1.txt的内容,该内容有四行并附加在file2.txt的前四行。必须完成覆盖file2.txt的前四行的所有记录,但保留原始内容的其余部分(其他行)。
如何使用批处理或Windows提示符执行此操作?
答案 0 :(得分: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没有以换行符结尾)。
答案 1 :(得分:1)
除非两个文件开头的四行占用完全相同的空间量,否则不能重写整个文件。
您无法在任意点插入或删除数据 - 您可以覆盖现有数据(字节为字节),截断文件或追加到末尾,但不能删除或插入中间。
所以基本上你需要:
使用Unix的head / tail命令可以相当轻松地完成此操作,如果这是可接受的解决方案,您可以从Cygwin获取。 Windows Services for Unix的头/尾可能也会起作用。
答案 2 :(得分:1)
单独使用批处理我不确定你能做到。
使用Unix命令,您可以使用Cygwin在Windows下轻松使用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
答案 3 :(得分:1)
如果你抓住coreutils from Gnutils,你可以用Cygwin做很多事情,而无需安装cygwin。 然后你可以使用头,尾和猫之类的东西来让你做你想要的东西。
e.g。
head -n 4 file2.txt
获取file2的前四行。
从上面链接的页面中提取zip,并从bin目录中获取您需要使用的任何util,并将它们放在路径中的目录中 - 例如对于下面你想要mv,头部和尾部。您可以使用内置的DOS移动命令,但您需要稍微更改选项。
问题有点不清楚,但是如果你想删除file2.txt的前四行并将它们附加到file1.txt,你可以执行以下操作:
head -n 4 file2.txt >> file1.txt
tail -n +5 file2.txt >> temp.txt
mv temp.txt file2.txt
答案 4 :(得分:0)
如果您使用Windows批处理以外的其他方式编写脚本,则可以执行此操作。使用windows脚本主机的vbscript或jscript应该可以做到。其中每一个都有一种从一个文件中抓取行并覆盖另一个文件的行的方法。
答案 5 :(得分:0)
你可以通过创建一个临时的第三个文件,从第一个文件中拉出行并将它们添加到临时文件,然后读取第二个文件,并在读入四个回车/换行符对后,将其余部分写入临时文件。然后,删除第二个文件并将临时文件重命名为第二个文件名。