Board logo

标题: [文本处理] [已解决]批处理如何把文件的第一行提取出来放到最后一行? [打印本页]

作者: iambater    时间: 2012-11-22 09:14     标题: [已解决]批处理如何把文件的第一行提取出来放到最后一行?

在文件夹中有N个txt,思路是将各自txt第一行的文字提取出来,放到各自的最后一行去!
不太会表达,不知道大家看清楚没有!

再次感谢:tmplinshi版主!顺祝心想事成!事业顺利!
作者: tmplinshi    时间: 2012-11-22 09:19

本帖最后由 tmplinshi 于 2012-11-22 09:30 编辑

以下代码是将第一行复制到文件末尾。第一行不能超过 1024 个字节(中文等全角字符占两个字节,英文/数字之类的半角字符占 1 个字节)。
  1. @echo off
  2. for %%a in (*.txt) do (
  3.     set /p line1=<"%%a"
  4.     set file="%%a"
  5.     setlocal enabledelayedexpansion
  6.     echo,!line1!>>!file!
  7.     endload
  8. )
复制代码

作者: Batcher    时间: 2012-11-22 10:15

  1. gawk "{if(NR==1)s=$0;print}END{print s}" a.txt >b.txt
复制代码

作者: iambater    时间: 2012-11-22 12:09

本帖最后由 iambater 于 2012-11-22 18:44 编辑

回复 2# tmplinshi


    你好版主!
假如我想将各自txt第一行的文字提取出来文字放到末尾的时候,前面和后面加字怎么加呢?

比如原来的第一行是  批处理之家
通过bat处理提取后放到最后一行,但是目前想在他的前面和后面加字!
比如变成    这是批处理之家学习的好地方!

这里红色的字就是提取后再加上的!
今天看到的好多帖子都是您处理的,佩服啊!

再次感谢:tmplinshi版主!顺祝心想事成!事业顺利!
作者: tmplinshi    时间: 2012-11-22 12:56

回复 4# iambater
  1. @echo off
  2. for %%a in (*.txt) do (
  3.     set /p line1=<"%%a"
  4.     set file="%%a"
  5.     setlocal enabledelayedexpansion
  6.     echo,前面!line1!后面>>!file!
  7.     endload
  8. )
复制代码

作者: tmplinshi    时间: 2012-11-22 12:57

回复 4# iambater
  1. @echo off
  2. for %%a in (*.txt) do (
  3.     gawk "{if(NR==1)s=$0}END{print \"前面\" s \"后面\" >>FILENAME}" "%%a"
  4. )
复制代码

作者: Batcher    时间: 2012-11-22 15:04

  1. sed "1h;$G" a.txt >b.txt
复制代码

作者: terse    时间: 2012-11-22 21:36

  1. @echo off&setlocal enabledelayedexpansion
  2. md "temp_\" 2>nul
  3. for /f "tokens=*" %%i in ('dir /b /a-d *.txt') do (
  4.     set /p line=<"%%i"
  5.     (more +1 "%%i"&echo 前面!line!后面)>"temp_\%%~ni_tem.txt"
  6. )
  7. pause
复制代码





欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2