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

[文本处理] 批处理如何检测srt每行字数,超出设定字数换行?

大佬们好,想批量检测多个srt文件每行的字数,超出30个字加空格或者换行

不检测时间码,只检测每一行的字数~

两个文件如下

链接:https://pan.baidu.com/s/1-xmRDW2-5L3JQB6YBOtsvg?pwd=0ydb

哪里的标点符号?文件里的?什么类型的文件?txt,html,word?这些文件又放在哪里?
什么样的标点符号?中文标点?英文标点?日文标点?还是所有语言的标点?空格,制表符之类的算标点不?
显示出来是显示到哪里?显示到控制台?添加逗号是添加什么逗号?是逗号这两个字不?

TOP

回复 2# Five66


    有点严谨的么

QQ 20147578

TOP

回复 2# Five66


    大佬,还在吗?再看一下吧,这样应该明确了

TOP

回复 3# czjt1234


    大佬,上午好

TOP

回复 1# 小白来了


    请找几个srt文件作为例子打包上传到网盘
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# Batcher


    大佬好,每个srt里面内容如下:只检测那一行文字,没有标点符号。检测文字字数。这是notpad打开的。



1
00:00:00,026 --> 00:00:00,852
批处理之家

2
00:00:00,952 --> 00:00:01,812
是个非常好的平台

3
00:00:01,912 --> 00:00:02,617
我爱批处理之家我爱批处理之家我爱批处理之家我爱批处理之家

TOP

回复 6# Batcher


    大佬,我把2个srt文件传网盘了,您抽时间给看下吧~

  就是把每一行文字比较长的根据设定的字数换行~
  1. 链接:https://pan.baidu.com/s/1-xmRDW2-5L3JQB6YBOtsvg?pwd=0ydb
  2. 提取码:0ydb
复制代码

TOP

  1. @echo off
  2. chcp 65001>nul
  3. for /f "delims=" %%i in ('dir /b /a-d *.srt') do (
  4.     (for /f "delims=" %%j in ('type "%%i") do (
  5.         set "str=%%j"
  6.         setlocal enabledelayedexpansion
  7.         if not "!str:~30!"=="" (
  8.             echo,!str:~,30!
  9.             echo,!str:~30!
  10.         ) else (
  11.             echo,%%j
  12.         )
  13.         endlocal
  14.     ))>"New-%%i"
  15. )
复制代码

TOP

回复 9# qixiaobin0715


    大哥好,生成的srt是空白的~ 哪里需要修改一下呢?

TOP

回复 6# Batcher


    大佬在吗?我这个srt的不好弄吗?

TOP

回复 10# 小白来了


请参考Q-04把9楼.bat文件保存为UTF-8编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 12# Batcher


    UTF-8也是生成的空白文件。是因为srt文件格式吗

TOP

回复 13# 小白来了


    9楼代码第四行
  1.     (for /f "delims=" %%j in ('type "%%i"') do (
复制代码

TOP

本帖最后由 Five66 于 2023-11-3 02:40 编辑

试试下面的看看吧,没有百度账号,下不了网盘文件
srt编码gbk或ansi,srt文件名不要以new_开头(因为会生成以new_开头的新的srt文件)
  1. @echo off&chcp 936
  2. set changdu=30
  3. for %%a in (*.srt) do (
  4. cd.>"new_%%~na.newnew"
  5. set "newfile=new_%%~na.newnew"
  6. for /f "delims=" %%b in ('findstr /n .* "%%a"') do (
  7. set line=%%b
  8. setlocal enabledelayedexpansion
  9. set line=!line:*:=!
  10. if not defined line (
  11. rem echo,>>"!newfile!"
  12. echo,>>"!newfile!"
  13. ) else if "!line:~%changdu%!" == "" (
  14. rem echo,!line:*:=!>>"!newfile!"
  15. echo,!line!>>"!newfile!"
  16. ) else (
  17. set n=0
  18. set /a m=%changdu%
  19. rem set line=!line:*:=!
  20. call :aaa
  21. )
  22. endlocal
  23. )
  24. )
  25. rename *.newnew *.srt
  26. del *.newnew 2>nul
  27. echo done&pause&exit/b
  28. :aaa
  29. echo,!line:~%n%,%changdu%!>>"!newfile!"
  30. set /a n+=%changdu%
  31. set /a m+=%changdu%
  32. if "!line:~%m%!" neq "" (goto :aaa) else (
  33. if "!line:~%n%!" neq "" echo,!line:~%n%!>>"!newfile!"
  34. )
复制代码

TOP

返回列表