标题: [文本处理] 用BAT能不能处理这样格式的文本内容? [打印本页]
作者: wh123wh123 时间: 2023-9-6 21:58 标题: 用BAT能不能处理这样格式的文本内容?
原A.txt内容格式如下:
-------------第几情况-----------------------------
1--基础姓名
2--性别
3--年龄
4--职业
-------------情况说明----------------------------
5.--考分28
6.--面试
7.--不合格
要求通过批处理处理后效果如下并输出到B.txt里:
{-------------第几情况-----------------------------}
基础姓名:GTIOU(1,0,0);
性别:GTIOU(2,0,0);
年龄:GTIOU(3,0,0);
职业:GTIOU(4,0,0);
{-------------情况说明----------------------------}
考分28:GTIOU(5,0,0);
面试:GTIOU(6,0,0);
不合格:GTIOU(7,0,0);
也就是在每行的后面追加“:GTIOU(这里是每行最前面的数值,0,0);”把每行最前面的数字移动到括号里......以此类推
,希望老师用BAT写一个这个的功能的代码吧,谢谢了
作者: 77七 时间: 2023-9-6 23:11
- @echo off
- set "file=1.txt"
-
- set a=(
- set b=)
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%file%"') do (
- set str=%%b
- setlocal enabledelayedexpansion
- if "!str!" equ "" (
- echo=
- ) else if "!str:~0,3!" equ "---" (
- echo {!str!}
- ) else (
- echo !str!|findstr "^[0-9]" 1>nul && (
- for /f "tokens=1* delims=.-" %%c in ("!str!") do (
- echo %%d:GTIOU!a!%%c,0,0!b!;
- )
- ) || echo !str!
- )
- endlocal
- ))>2.txt
- pause
复制代码
作者: hlzj88 时间: 2023-9-6 23:37
- @echo off
- for /f "delims=" %%i in (a.txt) do echo %%i|findstr /i "情况"&&echo {%%i}>>b.txt || for /f "tokens=1,2 delims=.-" %%k in ('echo %%i') do echo %%l:GTIOU^(%%k,0,0^);>>b.txt
复制代码
仅以顶楼示例做了测试。
作者: pd1 时间: 2023-9-7 00:05
- powershell -c "gc .\A.txt|%{if($_[0] -eq '-'){'{'+$_+'}'}else{$_.substring($_.LastIndexOf('-')+1)+':GTIOU('+$_[0]+',0,0);'}}>B.txt"
复制代码
作者: Five66 时间: 2023-9-7 06:19
本帖最后由 Five66 于 2023-9-7 06:30 编辑
- @set @theCopyLeft=0;/* 0& echo off
-
- set "inflie=aaa.txt"
- set "outfile=bbb.txt"
- set "add=:GTIOU(数字,0,0);"
-
- type "%inflie%" | cscript //nologo //e:jscript "%~f0" "%add%" >"%outfile%"
- echo done&pause&exit/b
- rem */
-
- var a,b=WScript.Arguments.Length?WScript.Arguments(0):":GTIOU(数字,0,0);";
- while (!WScript.StdIn.AtEndOfStream) {
- f = WScript.StdIn.ReadLine();
- if(!f){WScript.Echo(f);continue;}
- a=f.replace(/^(\d)+[.-]+/,'');
- if(f.substr(0,4)=="----")WScript.Echo('{'+f+'}');
- else if(RegExp.$1 && RegExp.$1 !='nil' && a)WScript.Echo(a+b.replace("数字",RegExp.$1));
- else WScript.Echo(f);
- "nil".replace(/(nil)/,"");
- }
复制代码
作者: Nsqs 时间: 2023-9-7 07:03
- powershell -noprofile -executionpolicy bypass "gc a.txt|%%{if($_ -match '^-'){\"{$_}\"}else{$r=[regex]::Matches($_,'(\d+)\.?--(\D+)').groups;\"$($r[2]):GTIOU($($r[1]),0,0);\"}}" >b.txt
复制代码
作者: qixiaobin0715 时间: 2023-9-7 08:31
本帖最后由 qixiaobin0715 于 2023-9-7 08:39 编辑
- @echo off
- setlocal enabledelayedexpansion
- (for /f "tokens=*" %%i in (a.txt) do (
- set "n=%%i"
- set /a "n=n"
- if !n! equ 0 (
- echo,%%i
- ) else (
- for /f "tokens=1* delims=.-" %%j in ("%%i") do (
- echo,%%k:GTIOU(%%j,0,0^);
- )
- )
- ))>b.txt
- pause
复制代码
作者: hfxiang 时间: 2023-9-7 12:51
回复 1# wh123wh123
也可以试一下gawk( http://bcn.bathome.net/tool/5.1.0/gawk.exe )- gawk -F"\\.?-- " "{if(/^-{8,}.+-{8,}$/){print\"{\" $0 \"}\"}else{print $2\":GTIOU (\" $1 \",0,0);\"}}" a.txt>b.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |