标题: [文本处理] 批量处理文本把第一行内容添加到最后一行 [打印本页]
作者: 乱乱 时间: 2015-1-20 00:09 标题: 批量处理文本把第一行内容添加到最后一行
本帖最后由 乱乱 于 2015-1-20 13:26 编辑
有一批文本类似下面内容:
J1,1,732.000,166.000
J2,1,992.483,373.515
J3,1,925.180,377.609
需要把第一行内容复制到最后一行,形成如下格式:
J1,1,732.000,166.000
J2,1,992.483,373.515
J3,1,925.180,377.609
J1,1,732.000,166.000
希望各位大大能给个批处理,感激不尽!
[attach]8080[/attach]
作者: yiwuyun 时间: 2015-1-20 10:22
本帖最后由 yiwuyun 于 2015-1-20 10:24 编辑
gawk "{if(FNR==1)a=$0; print;}END{print a;}" 1.txt
作者: 慕夜蓝化 时间: 2015-1-20 10:34
- @echo off
- set/p firstLine= <1.txt
- echo, >>1.txt
- set/p=%firstLine% <nul >>1.txt
- pause
复制代码
将1.txt改为你要更改的文件名。
作者: 乱乱 时间: 2015-1-20 10:52
回复 3# 慕夜蓝化
我的是一堆文件呢?
作者: 慕夜蓝化 时间: 2015-1-20 11:58
回复 4# 乱乱 - @echo off&setlocal enabledelayedexpansion
- for %%i in (*.txt) do (
- set/p firstLine= <"%%~i"
- set/p= <nul >>"%%~i"&echo, >>"%%~i"
- echo,!firstLine!>>"%%~i"
- )
- pause
复制代码
对当前文件夹下的所有文件有效。如果要作用于子目录,可以添加 /r 参数- for /r %%i in (*.txt) do (
复制代码
另外,在这里,我想询问下,为什么这里直接导入 >> 会出现在最后一行末尾的后面,而不是另起一行添加呢?
作者: 乱乱 时间: 2015-1-20 12:13
回复 5# 慕夜蓝化
嗯,我是要另起一行添加,能改一改吗?
作者: DAIC 时间: 2015-1-20 12:24
本帖最后由 DAIC 于 2015-1-20 13:39 编辑
把第一行移动到最后一行:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- set /p firstLine=<"%%i"
- more +1 "%%i" >"%%i.new"
- >>"%%i.new" echo,!firstLine!
- move /y "%%i.new" "%%i"
- )
复制代码
把第一行复制到最后一行:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- set /p firstLine=<"%%i"
- type "%%i" >"%%i.new"
- >>"%%i.new" echo,!firstLine!
- move /y "%%i.new" "%%i"
- )
复制代码
作者: 乱乱 时间: 2015-1-20 12:33
回复 7# DAIC
这个批处理把我的第一行删掉了?我要保留第一行并把第一行的内容复制到最后一行
作者: DAIC 时间: 2015-1-20 12:56
回复 8# 乱乱
我这里测试没有问题。你找一个txt文件,把执行脚本之前和执行脚本之后的文件打包压缩传上来我看看。
作者: 乱乱 时间: 2015-1-20 13:27
回复 9# DAIC
我把文本上传了,我试了你的批处理,把我的第一行挪到了最后一行
作者: 乱乱 时间: 2015-1-20 13:33
回复 7# DAIC
more +1 "%%i" >"%%i.new"
这个把+1删除,即可
作者: DAIC 时间: 2015-1-20 13:37
回复 11# 乱乱
把 more +1 改成 type 比较好
作者: 乱乱 时间: 2015-1-20 14:21
回复 12# DAIC
嗯,谢谢啦
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |