标题: [文本处理] [已解决]求助,批处理转换json格式 [打印本页]
作者: tianzi 时间: 2021-10-9 19:24 标题: [已解决]求助,批处理转换json格式
本帖最后由 tianzi 于 2021-11-16 19:18 编辑
样本中有以下字符
达到:
1.转换的文件以标本中的字符重命名,案例中就是:笑傲江湖.EP02.2001.DVDRip.x264.AC3-CMCT.srt
2.转换的文件移动到样本后面的目录,案例中就是:D:/笑傲江湖.全40集.2001.国语无字£CMCT风潇潇/
作者: idwma 时间: 2021-10-11 19:05
本帖最后由 idwma 于 2021-10-11 23:39 编辑
- @powershell "type '%~0'|select -skip 1|out-string|iex"&pause&exit
-
- [IO.File]::ReadAllLines("draft_content.json") -split "{"|%{
- if ($_ -match '"material_name":"(.*?)","material_url":"","path":"(.*?)"'){$name=$matches[1];$path=$matches[2]}
- if ($_ -match '"content":"(.*?)"'){[array]$a+=$matches[1]}
- if ($_ -match '"duration":(.*?),"start":(.*?)}'){
- if ($matches[2] -ne 0){
- [array]$b+=(("{0:HH:mm:ss,ff}" -f [datetime]([int64]$matches[2]*10)),("{0:HH:mm:ss,ff}" -f [datetime](([int64]$matches[2]+[int64]$matches[1])*10))) -join ' --> '
- }
- }
- }
- for($i=0;$i -le $a.count;$i++){
- $c+=($i+1),$b[$i],$a[$i],"",""
- }
- $c>([io.path]::GetDirectoryName($path)+"\"+[io.path]::GetFileNameWithoutExtension($path)+".srt")
复制代码
作者: tianzi 时间: 2021-10-15 22:15
有弹出提示
作者: idwma 时间: 2021-10-15 23:33
回复 3# tianzi
路径目录和json文件里的不一样?
作者: tianzi 时间: 2021-10-16 00:36
本帖最后由 tianzi 于 2021-10-16 00:52 编辑
我明白了,是因为刚才那个测试的目录名是繁体字,所以报错
作者: idwma 时间: 2021-10-16 00:40
回复 5# tianzi
多发几个不行的样本来测试一下
作者: tianzi 时间: 2021-10-16 00:53
回复 6# idwma
我明白了,是因为刚才那个测试的目录名是繁体字,所以报错
作者: tianzi 时间: 2021-10-16 01:02
本帖最后由 tianzi 于 2021-10-16 01:27 编辑
回复 6# idwma
可以增加一个细节吗?若存在同名文件,则保留并从2开始编号,依次下去,因为同一个视频因为时长原因,可能分多次转换
另外,时间轴跟软件在毫秒位处有差异
作者: idwma 时间: 2021-10-16 16:32
回复 8# tianzi
时间是直接用json文件里的值,有差异就不知道了
作者: tianzi 时间: 2021-10-16 17:08
回复 9# idwma
可以增加一个细节吗?若存在同名文件,则保留并从2开始编号,依次下去,因为同一个视频因为时长原因,可能分多次转换
作者: idwma 时间: 2021-10-16 18:25
回复 10# tianzi
用时间简单点- @powershell "type '%~0'|select -skip 1|out-string|iex"&pause&exit
-
- [IO.File]::ReadAllLines("draft_content.json") -split "{"|%{
- if ($_ -match '"material_name":"(.*?)","material_url":"","path":"(.*?)"'){$name=$matches[1];$path=$matches[2]}
- if ($_ -match '"content":"(.*?)"'){[array]$a+=$matches[1]}
- if ($_ -match '"duration":(.*?),"start":(.*?)}'){
- if ($matches[2] -ne 0){
- [array]$b+=(("{0:HH:mm:ss,ff}" -f [datetime]([int64]$matches[2]*10)),("{0:HH:mm:ss,ff}" -f [datetime](([int64]$matches[2]+[int64]$matches[1])*10))) -join ' --> '
- }
- }
- }
- for($i=0;$i -le $a.count;$i++){
- $c+=($i+1),$b[$i],$a[$i],"",""
- }
- $d=[io.path]::GetDirectoryName($path)+"\"+[io.path]::GetFileNameWithoutExtension($path)+".srt"
- if(test-path $d){$c>([io.path]::GetDirectoryName($path)+"\"+[io.path]::GetFileNameWithoutExtension($path)+("{0:HH.mm.ss}" -f (get-date))+".srt")}else{$c>$d}
复制代码
作者: tianzi 时间: 2021-10-16 20:23
回复 11# idwma
太感谢了!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |