标题: [文本处理] [已解决]如何用批处理按字节分割文本行内容 [打印本页]
作者: qzwifi 时间: 2022-7-12 16:34 标题: [已解决]如何用批处理按字节分割文本行内容
本帖最后由 qzwifi 于 2022-7-12 23:57 编辑
文本行内容依次顺序按需要的字节数分割保存
例:
a.txt 行内容为:
00000000000000000001
把 a.txt文本行按每2个字节处理保存为b.txt:
00
00
00
00
00
00
00
00
00
01
代码内可输入需要分割的字节数,比如把a.txt文本行按每3个字节处理保存为b.txt (当行字节数与设置分割的字节数不对等时将剩余的加在b文本最后一行或直接保存在最后一行) 例:
000
000
000
000
000
00001
或
000
000
000
000
000
000
01
作者: hfxiang 时间: 2022-7-12 16:55
@echo off
@rem 分割节
set /a split=2
set "str=00000000000000000001"
echo;%str%
:loop
call echo;%%str:~0,%split%%%
call set str=%%str:~%split%%%
if defined str goto :loop
pause &exit/b
作者: qixiaobin0715 时间: 2022-7-12 17:08
按照楼主的说法,文本中应当不止一行。
作者: qzwifi 时间: 2022-7-12 17:20
本帖最后由 qzwifi 于 2022-7-12 17:49 编辑
回复 3# qixiaobin0715
嗯嗯,而且2楼的行字符大于8186个就不行了。
作者: idwma 时间: 2022-7-12 21:47
- /*&cls
- @echo off
- cscript -nologo -e:jscript "%~f0" "C:\a.txt" "2"
- pause&exit
- */
- var fso, f1;
- fso = new ActiveXObject("Scripting.FileSystemObject");
- f1 = fso.OpenTextFile(WSH.arguments(0),1,-2);
- f2=f1.ReadAll()
- f1.Close()
- f2=f2.replace(/\r\n/g,'')
- s=new Number(WSH.arguments(1))
- for(i=0;i< f2.length;i=i+s){WSH.echo(f2.substr(i,s))}
复制代码
作者: qzwifi 时间: 2022-7-12 23:56
因为一行的字符数比较多,有几万个。5楼的同样行字符多就乱了(会自动去除前后的一些字符比较乱,但能分割的行字符数比2楼多些,能达到一万三千多也可能更多些没有详试)。目前暂用2楼的,稍加修改,分多次处理,虽然超出会报错,但不乱。谢谢大家!
作者: hfxiang 时间: 2022-7-13 10:04
本帖最后由 hfxiang 于 2022-7-13 10:09 编辑
可试一下第3方工具awk(下载地址1: http://bcn.bathome.net/s/tool/index.html?key=gawk 地址2: https://sourceforge.net/projects/ezwinports/files/ )
测试情况如下:
D:\>gawk "BEGIN{FPAT=\".{1,2}\"}{n = patsplit($0,a); for(i=1;i<=n;i++) print a}" 1.txt
00
00
00
00
00
00
00
00
00
01
D:\>gawk "BEGIN{FPAT=\".{1,3}\"}{n = patsplit($0,a); for(i=1;i<=n;i++) print a}" 1.txt
000
000
000
000
000
000
01
D:\>gawk "BEGIN{FPAT=\".{1,7}\"}{n = patsplit($0,a); for(i=1;i<=n;i++) print a}" 1.txt
0000000
0000000
000001
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |