中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-10 06:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 已解决 求助,如何用批处理将文本的格式做如下变化 查看 785 回复 10
楼 主 已解决 求助,如何用批处理将文本的格式做如下变化 发表于 2008-11-08 17:58 ·  中国 山东 青岛 联通
初级用户
★★
积分 107
发帖 60
注册 2007-11-07 22:03
18年会员
UID 102010
性别 男
状态 离线
有两个文档

第一个如下:
片名:百万英镑
Once upon a time when Britain was very rich 曾经有段时间英国非常富有
deep in the box of bank in England 在英格兰银行巨大的保管库里
there was more gold than anywhere in the world 所储存的黄金 比其他任何地方都多

第二个:
00:22.36 --> 01:16.16 片名:百万英镑
01:16.16 --> 01:19.48 Once upon a time when Britain was very rich 曾经有段时间英国非常富有


第二个文档的箭头后边的数字是第二行的数字


请问如何转换,

小弟新手,请各位大侠,不吝赐教!已解决

[ Last edited by kaikai163 on 2008-11-8 at 23:12 ]
2 发表于 2008-11-08 18:13 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
第二个文档的箭头后边的数字是第二行的数字

什么意思?
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
kaikai163 +1 2008-11-08 22:24
3 发表于 2008-11-08 18:39 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
@echo off & setlocal enabledelayedexpansion
for /f "tokens=1* delims=" %%a in (a.txt) do (
set /a n+=1,m=n-1
set ".!n!=%%a" & set "_!n!=%%b"
if !n! gtr 1 call :loop "%%a"
)

pause>nul & exit /b

:loop
echo !.%m%! --^> %~1 !_%m%!


另,楼主没有说明白最后一行该如何显示。。。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
kaikai163 +2 2008-11-08 22:25
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
4 发表于 2008-11-08 18:42 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
字幕文件处理……
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
5 发表于 2008-11-08 22:23 ·  中国 山东 青岛 联通
初级用户
★★
积分 107
发帖 60
注册 2007-11-07 22:03
18年会员
UID 102010
性别 男
状态 离线
4楼的是内行啊!就是这个要求!

不过我现在找到了一个软件,可以转换也就是lrc转换成srt不过里边有不少空行

如下显示

4
00:01:19,489 --> 00:01:21,480
deep in the box of bank in England 在英格兰银行巨大的保管库里

5
00:01:21,489 --> 00:01:27,160
there was more gold than anywhere in the world 所储存的黄金 比其他任何地方都多

6
00:01:27,169 --> 00:01:27,720
safe the banks of England. 那时有信誉的人常说


该如何将数字与空行去掉,并且字幕与时间放到一行上去呢??

还是请各位高手不吝赐教!
6 发表于 2008-11-08 22:27 ·  中国 山东 青岛 联通
初级用户
★★
积分 107
发帖 60
注册 2007-11-07 22:03
18年会员
UID 102010
性别 男
状态 离线
晕,一不留神给二楼加分了,本来想给三楼大哥加的!
7 Re 5楼 发表于 2008-11-08 22:32 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
setlocal enabledelayedexpansion
type nul>result.txt
set m=2
for /f "tokens=*" %%i in ('findstr /v "^*$" a.txt') do (
set /a hangn+=1
set /a n+=1
set line=!line! %%i
if !n! equ !m! (
echo.!line:~1!>>result.txt
set line=
set /a n=0
)
)
set /a t=!hangn!%%!m!
if !t! equ 0 goto end
echo.!line!>>result.txt
:end
8 发表于 2008-11-08 22:59 ·  中国 山东 青岛 联通
初级用户
★★
积分 107
发帖 60
注册 2007-11-07 22:03
18年会员
UID 102010
性别 男
状态 离线
版主直接是神仙,我太崇拜你了!

不过还有一点小小的要求

00:02:21,169 --> 00:02:23,120 A bet 是为了打赌

00:02:23,129 --> 00:02:26,240 打赌你是说打赌


版主能看出第一行 “A bet 是为了打赌” 前面那个空格为什么那么宽呢?

然后请修改一下您的批处理,使第二行前面加一个这样的空格。

麻烦你了!
9 Re 8楼 发表于 2008-11-08 23:02 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
你自己把7楼代码中:
set line=!line! %%i
!line!和%%i中间的空格换成制表符tab试试
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
kaikai163 +2 2008-11-08 23:10
10 发表于 2008-11-08 23:03 ·  中国 山东 青岛 联通
初级用户
★★
积分 107
发帖 60
注册 2007-11-07 22:03
18年会员
UID 102010
性别 男
状态 离线
Originally posted by HAT at 2008-11-8 11:02 PM:
你自己把7楼代码中:
set line=!line! %%i
!line!和%%i中间的空格换成制表符tab试试


好的我试试!
11 发表于 2008-11-08 23:11 ·  中国 山东 青岛 联通
初级用户
★★
积分 107
发帖 60
注册 2007-11-07 22:03
18年会员
UID 102010
性别 男
状态 离线
成功,感谢hat版主!
论坛跳转: