标题: [文本处理] BAT脚本如何批量处理文本把第二行内容添加到最后一行? [打印本页]
作者: bryant2009 时间: 2022-11-25 12:07 标题: BAT脚本如何批量处理文本把第二行内容添加到最后一行?
有一批文本类似下面内容:
3,6889.2222,1,1,面,,开发用地,,@
1,1,732.000,166.000
2,1,992.483,373.515
3,1,925.180,377.609
需要把第二行内容复制到最后一行,形成如下格式:
3,6889.2222,1,1,面,,开发用地,,@
1,1,732.000,166.000
2,1,992.483,373.515
3,1,925.180,377.609
1,1,732.000,166.000
希望各位大大能给个批处理,感激不尽!
之前参考了批量处理文本把第一行内容添加到最后一行
感谢!!!
原代码为:- @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"
- )
复制代码
作者: qixiaobin0715 时间: 2022-11-25 12:34
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
- (for /l %%i in (1,1,2) do set /p str=)<"%%a"
- >>"%%a" echo,!str!
- )
- pause
复制代码
作者: bryant2009 时间: 2022-11-25 12:53
回复 2# qixiaobin0715
谢谢兄弟,感谢,搞定了
作者: bryant2009 时间: 2022-11-25 13:22
回复 2# qixiaobin0715
如果是
有一批文本类似下面内容:
4,6889.2222,1,1,面,,开发用地,,@
1,1,732.000,166.000
2,1,992.483,373.515
3,1,925.180,377.609
4,1,732.000,166.000
把以上所有的txt最后一行的第一个序号,都改成1
结果:
4,6889.2222,1,1,面,,开发用地,,@
1,1,732.000,166.000
2,1,992.483,373.515
3,1,925.180,377.609
1,1,732.000,166.000
谢谢大大。
作者: bryant2009 时间: 2022-11-25 13:39
回复 2# qixiaobin0715
也可以理解为,第二行替换最后一行。
作者: qixiaobin0715 时间: 2022-11-25 13:58
实际上,纯批并不善于处理这类文本修改的问题。给出单个文本修改方案,多个文件请自行修改,仅供参考:- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1* delims=," %%i in (1.txt) do (
- echo,!str!
- set "str=%%i,%%j"
- )
- echo,1,!str:*,=!
- pause
复制代码
想要完美解决,还是等等大佬们吧。
作者: Batcher 时间: 2022-11-25 14:00
回复 1# bryant2009
对于1楼的需求:- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- echo 正在处理文件:%%i
- set "str="
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%%i"') do (
- if %%a equ 2 (
- set "str=%%b"
- )
- echo,%%b
- ))>"%%i.New"
- >>"%%i.New" echo,!str!
- move /y "%%i.New" "%%i"
- )
复制代码
作者: bryant2009 时间: 2022-11-25 14:04
回复 6# qixiaobin0715
谢谢,我用别的软件加上您第一次给我的那个代码,同样也可以实现,谢谢
作者: bryant2009 时间: 2022-11-25 14:05
回复 7# Batcher
第一个实现了,第二个,结合其他的软件也可以实现。如果能一步到位,那就更好了,也就是先把最后一行删掉,然后把第二行复制到最后一行。谢谢
作者: qixiaobin0715 时间: 2022-11-25 14:26
本帖最后由 qixiaobin0715 于 2022-11-25 14:40 编辑
未测试,应当是勉强能用:- @echo off
- for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
- setlocal enabledelayedexpansion
- (for /f "tokens=1* delims=," %%i in ('type "%%a"') do (
- if defined str echo,!str!
- set "str=%%i,%%j"
- )
- echo,1,!str:*,=!)>temp.log
- move /y "temp.log" "%%a">nul
- endlocal
- )
- pause
复制代码
作者: bryant2009 时间: 2022-11-25 15:18
回复 10# qixiaobin0715
感谢,现在在外面,回头测试,谢谢
作者: terse 时间: 2022-11-25 16:12
- @echo off
- for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
- setlocal enabledelayedexpansion
- >t.tt (for /f "usebackq delims=" %%i in ("%%a") do (
- if defined str (
- echo,!str!
- if not defined _str set "_str=%%i"
- )
- set "str=%%i"
- )
- echo,1,!_str:*,=!
- )
- move "t.tt" "%%a" >nul
- endlocal
- )
- pause
复制代码
作者: bryant2009 时间: 2022-11-25 16:17
回复 12# terse
谢谢
作者: bryant2009 时间: 2022-11-25 16:33
回复 7# Batcher
谢谢版主,问题已解决。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |