Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在命令行(Windows)中将文本添加到另一个文本文件开头的最简单方法_Windows_Command Line_Text Files - Fatal编程技术网

在命令行(Windows)中将文本添加到另一个文本文件开头的最简单方法

在命令行(Windows)中将文本添加到另一个文本文件开头的最简单方法,windows,command-line,text-files,Windows,Command Line,Text Files,在命令行(Windows)中将文本添加到另一个文本文件开头的最简单方法是什么 未经测试。 Double>>表示“追加”以下序列将执行您想要的操作,将“新的第一行””添加到文件.txt中 ren file.txt temp.txt echo.new first line>file.txt type temp.txt >>file.txt del temp.txt 注意回声的结构。“echo.”允许您在必要时将空格放在行的开头,并邻接“”重定向字符确保没有尾随空格(当然,除非您需

在命令行(Windows)中将文本添加到另一个文本文件开头的最简单方法是什么

未经测试。
Double>>表示“追加”

以下序列将执行您想要的操作,将“
新的第一行”
”添加到
文件.txt

ren file.txt temp.txt
echo.new first line>file.txt
type temp.txt >>file.txt
del temp.txt

注意回声的结构。“
echo.
”允许您在必要时将空格放在行的开头,并邻接“
”重定向字符确保没有尾随空格(当然,除非您需要)。

以下操作也可以:

echo "my line" > newFile.txt
type newfile.txt myOriginalFile.txt > myOriginalFile.txt

在第一行中,您正在将我的行写入newfile.txt。在第二行中,您将用newfile.txt和myOriginalFile.txt中的文本覆盖myOriginalFile.txt中的文本,从而替换myOriginalFile.txt中的文本,创建一个新的myOriginalFile.txt,其中包含这两个文本。

主题的另一个变体

(echo New Line 1) >file.txt.new
type file.txt >>file.txt.new
move /y file.txt.new file.txt
与其他已发布答案相比的优势:

  • 最小步骤数
  • 没有留下临时文件
  • 括号可防止第一行出现不必要的尾随空格
  • “即时”移动命令将旧版本替换为新版本
  • 原始文件保持不变,直到最后一刻被替换
  • 最后的内容只写一次——如果文件很大,可能很重要

如果行的第一部分可以排序,例如日期/时间,则使用SORT/R命令将最新条目放在文件顶部。 以下内容将以“YYYY-MM-DD HH:DD:SS AM/PM”的形式在每一行的开始处放置一个日期/时间戳:

echo %DATE:~-4%-%DATE:~7,2%-%DATE:~4,2% %TIME% "my text line" >> myOriginalFile.txt
sort /R myOriginalFile.txt /O myOriginalFile.txt
但是,随着文件变得非常大,这种方法(以及上面的方法)变得很慢。考虑仅在需要时进行排序,而不是与每个条目排序,或者通过PultBuSE使用另一个脚本/编程语言< /P> < P>;
@("NEW Line 1","NEW Line 2") + (Get-Content "C:\Data\TestFile.txt") | Set-Content "C:\data\TestFile.txt"

如果要处理较大的文件,可接受的解决方案会变得相当缓慢。 那么使用带有“+”的copy会更快

echo "my line" > newFile.txt
copy newFile.txt+myOriginalFile.txt combinedFile.txt
move /Y combinedFile.txt myOriginalFile.txt
del newFile.txt

第一行将是“回声”而不是“类型”,但谢谢,它成功了。嗯。。。不是吗?如果它是一个像例子一样的字符串,那就是echo。它的类型如果你正在读取一个文件。。。对吗?@dr.evil如果我想在特定行添加文本怎么办?例如,一个文件有100行,我想在第20行添加文本。这很好,但在大文件的情况下,它可能会持续很长时间-有没有更方便的方法?这不起作用(在Win7上测试)。原始内容丢失,新行在最终内容中重复。这似乎是一种冒险的做法,因为如果第二行出现任何错误,您将损坏myOriginalFile。txt@StephenLead-这比风险更糟糕-它永远不起作用。@AdrianBR你是说
类型
也可以放在括号中,为了避免2次重定向到
file.txt.new
?我想知道这一点,但不得不假设它不是,因为还没有人发布它(我现在无法在Windows上测试)。在这种情况下,我想知道我们是否可以将包括
type file.txt
在内的整个块重定向回同一个
>file.txt
,避免第二个文件和
移动
(但我想不会太多,或者有人会说!)下划线\u d-当然可以这样做,尽管每个命令必须在单独的一行上,或者在命令之间需要
。实际上,这样做更快,因为文件在写入时只打开一次。我的原始代码带有括号,以防止在1后面出现不需要的空格。没有paren和空格
echo New Line 1>file.txt。New
1>
解释为重定向stdout。1不会是written@dbenham谢谢,我会试试的!在你谈到单独的行或
&
之后,我意识到我在批处理文件的上下文中无意识地想象了这一点,而OP询问了命令行,因此这可能解释了为什么没有人建议我这样做,因为它需要在批处理文件中才能工作(可能吧?我现在意识到我不知道
cmd
是否支持括号中的交互式块)@underline_d-
cmd
确实支持“交互式块”。控制台会不断提示“更多”,直到您输入一行关闭括号。
echo "my line" > newFile.txt
copy newFile.txt+myOriginalFile.txt combinedFile.txt
move /Y combinedFile.txt myOriginalFile.txt
del newFile.txt