Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
Text 批量向ASCII文本文件添加标题,可变长度_Text_Batch File_Ascii - Fatal编程技术网

Text 批量向ASCII文本文件添加标题,可变长度

Text 批量向ASCII文本文件添加标题,可变长度,text,batch-file,ascii,Text,Batch File,Ascii,我需要向一批ascii(.asc)文件添加一个简单的单行标题,长度可变(每行几百万行),并使用相同的文件名保存。我有很多这样的文件。这最好使用windows批处理文件来完成吗?如果是的话,有人能解释一下怎么做吗 提前感谢-我知道这应该很简单,并且已经搜索了答案,但没有找到任何似乎完全正确的答案…由于您只能将某些内容附加到文件中,因此无法通过简单的操作为文本添加前缀。 但你可以: 首先将标题复制到新文件(copy header.template header.tmp) 将原始文件复制到新文件中(键

我需要向一批ascii(.asc)文件添加一个简单的单行标题,长度可变(每行几百万行),并使用相同的文件名保存。我有很多这样的文件。这最好使用windows批处理文件来完成吗?如果是的话,有人能解释一下怎么做吗


提前感谢-我知道这应该很简单,并且已经搜索了答案,但没有找到任何似乎完全正确的答案…

由于您只能将某些内容附加到文件中,因此无法通过简单的操作为文本添加前缀。
但你可以:

  • 首先将标题复制到新文件(
    copy header.template header.tmp
  • 将原始文件复制到新文件中(
    键入original.txt>>header.tmp
  • 删除原始文件(
    del original.txt
  • 将新文件重命名为原始名称(
    ren header.tmp original.txt
  • 编辑:

    for %%F in (*.txt) DO (
      echo Working on %%F
      copy header.template newFile.tmp
      type "%%~F" >> newFile.tmp
      del "%%~F"
      copy newFile.tmp "%%~F"
    )
    

    要做到这一点,必须重写整个文件

    未测试的批处理文件:

    move source.asc source.asc.tmp
    echo "header" > source.asc
    type source.asc.tmp >> source.asc
    del source.asc.tmp
    
    根据其他答案,可以这样做多个文件(这次实际测试):


    虽然jeb的回答解决了这个问题,但我认为下面的方法在处理大量文件时应该运行得更快,因为它使用更少的命令和“批量重命名”操作:

    for %%F in (*.txt) do (
       echo Working on %%F
       copy header.template + "%%F" "%%~nF.tmp"
    )
    move /Y *.tmp *.txt
    

    +1,但是你应该删除
    source.asc.tmp
    而不是刚刚创建的
    source.asc
    啊,谢谢,我在电车站之间的电话上潦草写下了这个:)谢谢dwurf,但是我如何让批处理文件在多个文件上运行,即在一个包含50个.asc文件的目录中运行?谢谢Jeb,这看起来不错。。。显示出我的无知,但我如何让bat将每个文件作为“原始文件”使用,然后移动到目录中的下一个文件并执行相同的操作?在所有文件上添加FOR循环谢谢Jeb-这在初始测试后看起来非常完美。我知道是这样,但需要帮助。。。再次感谢。
    COPY/B header.template+“%%~F”newFile.tmp
    ?是的。1000.txt文件上有1000个。另一个:
    MOVE/Y newFile.tmp“%%~F”
    :)(虽然,老实说,我自己通常更喜欢
    del
    +
    copy
    而不是
    move
    )是的,这更短,可能更快,但它也需要更多的磁盘空间,因为它会暂时将处理的
    .txt
    文件占用的空间增加一倍。(是的,我知道:“空间很便宜”等等,但我仍然觉得这个细节值得一提。)但是,当然,它很可能会在任何现代Windows PC上运行,所以它是+1,只需注意一点:我会将
    /B
    开关添加到
    copy
    命令中,以避免在目标文件末尾附加讨厌的
    0x1A
    for %%F in (*.txt) do (
       echo Working on %%F
       copy header.template + "%%F" "%%~nF.tmp"
    )
    move /Y *.tmp *.txt