标题: [文本处理] [已解决]批处理代码修改-指定字符串占位长度 [打印本页]
作者: meiszp 时间: 2024-5-25 19:47 标题: [已解决]批处理代码修改-指定字符串占位长度
本帖最后由 meiszp 于 2024-7-10 08:32 编辑
下面代码是从txt文件提取数据,提取第4行(不算第2行空行)文字输出到out.txt的第一列,由于每个txt的第4行字符串长度不同,小于12个字符,为了统一输出格式,要求长度为12个字符,不足空格补齐。
txt文件的前几行- SDDD BLDE Co.
-
- ***********************************************************************
- ANABDCD OF LAEDDV SEADDVLS
- 101
- ***********************************************************************
-
- ***********************************************
复制代码
现在输出的格式,列不对齐
101 0.135202E+06 0.497862E+05 0.475893E+02 -.292984E+02 -.193619E-01 0.974525E-02
102-111 0.460730E+05 -.286256E+05 0.751879E+02 0.574422E+02 0.108112E-01 -.289517E-01
201 0.232319E+06 0.828039E+05 0.854119E+02 -.519552E+02 -.386417E-01 0.163690E-01
202-34 0.661483E+05 -.445798E+05 0.111548E+03 0.100785E+03 0.273654E-01 -.449156E-01
希望输出的格式如下,列对齐
101 0.135202E+06 0.497862E+05 0.475893E+02 -.292984E+02 -.193619E-01 0.974525E-02
102-111 0.460730E+05 -.286256E+05 0.751879E+02 0.574422E+02 0.108112E-01 -.289517E-01
201 0.232319E+06 0.828039E+05 0.854119E+02 -.519552E+02 -.386417E-01 0.163690E-01
202-34 0.661483E+05 -.445798E+05 0.111548E+03 0.100785E+03 0.273654E-01 -.449156E-01- @echo off
- (for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- setlocal enabledelayedexpansion
- for /f "tokens=1-3,5,11" %%a in ('type "%%i"') do (
- set /a n+=1
- if !n! equ 4 (
- set str=%%a ::提取第4行
- ) else if "%%a %%b %%c"=="inclu ma coef" (
- set m=0
- ) else if defined m (
- set /a m+=1
- set str=!str! %%d %%e
- if !m! equ 3 (
- echo,!str!
- set m=
- )
- )
- )
- endlocal
- ))>out.txt
- pause
复制代码
作者: newswan 时间: 2024-5-25 20:43
本帖最后由 newswan 于 2024-5-25 20:54 编辑
@echo off
(for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
setlocal enabledelayedexpansion
for /f "tokens=1-3,5,11" %%a in ('type "%%i"') do (
set /a n+=1
if !n! equ 4 (
set "str=%%a "
set str=!str:~0,12!
) else if "%%a %%b %%c"=="inclu ma coef" (
set m=0
) else if defined m (
set /a m+=1
set str=!str! %%d %%e
if !m! equ 3 (
echo,!str!
set m=
)
)
)
endlocal
))>out.txt
pause
作者: Five66 时间: 2024-5-25 22:49
将空格换成2个tab , 文本编辑器打开呈现时会自动制表的
作者: hfxiang 时间: 2024-5-26 09:23
回复 1# meiszp
用第3方工具gawk(http://bcn.bathome.net/tool/4.1.0/gawk.exe)的实现方法如下:- @echo off
- rem 建议保存为ANSI编码
- del "out.txt"
- gawk "FNR==5{for(i=1;i<=NF;i++){printf\"%%-20s\",$i}print\"\"}" "*.txt">"out.txt"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |