[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]如何用批处理按字节分割文本行内容

本帖最后由 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-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

TOP

因为一行的字符数比较多,有几万个。5楼的同样行字符多就乱了(会自动去除前后的一些字符比较乱,但能分割的行字符数比2楼多些,能达到一万三千多也可能更多些没有详试)。目前暂用2楼的,稍加修改,分多次处理,虽然超出会报错,但不乱。谢谢大家!

TOP

  1. /*&cls
  2. @echo off
  3. cscript -nologo -e:jscript "%~f0"  "C:\a.txt" "2"
  4. pause&exit
  5. */
  6. var fso, f1;
  7. fso = new ActiveXObject("Scripting.FileSystemObject");
  8. f1 = fso.OpenTextFile(WSH.arguments(0),1,-2);
  9. f2=f1.ReadAll()
  10. f1.Close()
  11. f2=f2.replace(/\r\n/g,'')
  12. s=new Number(WSH.arguments(1))
  13. for(i=0;i< f2.length;i=i+s){WSH.echo(f2.substr(i,s))}
复制代码
1

评分人数

TOP

本帖最后由 qzwifi 于 2022-7-12 17:49 编辑

回复 3# qixiaobin0715


    嗯嗯,而且2楼的行字符大于8186个就不行了。

TOP

按照楼主的说法,文本中应当不止一行。

TOP

@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
1

评分人数

TOP

返回列表