标题: [文本处理] 如何用bat 处理1词一行改 4个词同一行并加入符号 [打印本页]
作者: idc878787 时间: 2022-2-25 20:13 标题: 如何用bat 处理1词一行改 4个词同一行并加入符号
本帖最后由 idc878787 于 2022-2-25 21:04 编辑
如何用bat 处理1词一行改 4个词同一行并加入符号
文本a.txt
aa
bb
cc
dd
ee
ff
gg
hh
生成新文本b.txt
aa,bb,cc,dd
ee,ff,gg,hh
作者: Fit 时间: 2022-2-25 21:25
@echo off&setlocal enabledelayedexpansion
set /a cout=0
(for /f "tokens=*" %%i in (a.txt) do (
set /a cout+=1
if not !cout! equ 4 (
set /p=%%i,<nul
) else (set /a cout=0&echo,%%i)
))>b.txt
pause
作者: lixiaoxiao 时间: 2022-2-25 21:39
2楼的逻辑能理解,但对于语法不怎么明白, %%i,<nul 和 echo,%%i 是什么情况?
作者: Fit 时间: 2022-2-25 21:44
set /p=%%i,<nul 好像不换行输出
echo,%%i 换行输出
作者: qixiaobin0715 时间: 2022-2-26 09:46
本帖最后由 qixiaobin0715 于 2022-2-26 09:51 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in (a.txt) do (
- set /a n+=1
- set /a m=n%%4
- set str!m!=%%a
- if !m! equ 0 echo,!str1!,!str2!,!str3!,!str0!
- )
- pause
复制代码
总行数必须是4的倍数,否则行尾最后一组不会被显示。
作者: qixiaobin0715 时间: 2022-2-27 09:53
总行数不是4的倍数,最后一组也显示。可以这样:- @echo off
- setlocal enabledelayedexpansion
- (for /f "delims=" %%a in (a.txt) do (
- set /a n+=1
- set /a m=n%%4
- set str!m!=%%a
- if !m! equ 0 echo,!str1!,!str2!,!str3!,!str0!
- )
- if !m! neq 0 (
- for /l %%i in (1,1,!m!) do (
- set str=!str!!str%%i!,
- )
- echo,!str:~,-1!
- ))>aaa.txt
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |