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

请求删除此帖,废弃无用了请求删除此帖,废弃无用了

本帖最后由 cl2039996 于 2022-5-8 16:30 编辑

请求删除此帖,废弃无用了请求删除此帖,废弃无用了请求删除此帖,废弃无用了请求删除此帖,废弃无用了

本帖最后由 zaqmlp 于 2022-4-14 18:06 编辑
  1. <# :
  2. cls&echo off&cd /d "%~dp0"&mode con lines=5000
  3. set "current=%cd%"
  4. powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText(\"%~f0\",[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
  5. pause
  6. exit
  7. #>
  8. $facelist=@("HarmonyOS Sans SC Bold|12","HarmonyOS Sans SC|15");
  9. $current=get-item -literal $env:current;
  10. $files=@(dir -literal $current.FullName -recurse|?{($_.Extension -eq '.srt') -and ($_ -is [System.IO.FileInfo])});
  11. $enc=New-Object System.Text.UTF8Encoding $False;
  12. write-host '1、添加';
  13. write-host '2、清除';
  14. $choice='';
  15. while($choice -notmatch '^(1|2)$'){
  16.     $choice=read-host '输入数字序号并回车';
  17. }
  18. for($i=0;$i -lt $files.length;$i++){
  19.     $text=[IO.File]::ReadAllText($files[$i].FullName, $enc);
  20.     write-host $files[$i].FullName.Substring($current.FullName.length);
  21.     [System.Collections.ArrayList]$s=@();$newtext='';
  22.     $oldtext=[IO.File]::ReadAllText($files[$i].FullName, $enc);
  23.     $arr=$oldtext.trim() -split '[\r\n]{3,}';
  24.     for($j=0;$j -lt $arr.length;$j++){
  25.         $brr=$arr[$j] -split '[\r\n]+';
  26.         for($k=2;$k -le 3;$k++){
  27.             if(-not [string]::IsNullOrEmpty($brr[$k])){
  28.                 $m=[regex]::matches($brr[$k], '<font (face|size)=[^>]*?>', 'IgnoreCase');
  29.                 if($m.count -ge 1){
  30.                     $brr[$k]=$brr[$k] -replace '<font (face|size)=[^>]*?>','';
  31.                     foreach($it in $m){
  32.                         $brr[$k]=([regex]'(?i)</font>\s*$').replace($brr[$k],'', 1);
  33.                     }
  34.                 }
  35.                 $brr[$k]=$brr[$k] -replace '\{\\fn.+?\\fs\d+?\}',''
  36.                 if($choice -eq '1'){
  37.                     $crr=$facelist[$k-2].split('|');
  38.                     $brr[$k]='{\fn'+$crr[0]+'\fs'+$crr[1]+'}'+$brr[$k];
  39.                 }
  40.             }
  41.         }
  42.         $line=$brr -join "`r`n";
  43.         [void]$s.add($line);
  44.     }
  45.     $newtext=$s -join "`r`n`r`n"
  46.     [IO.File]::WriteAllText($files[$i].FullName, $newtext, $enc);
  47. }
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 2# zaqmlp


    您受累看下,我刚吐血写完的需求。请在之前的代码做一些变更。

TOP

回复 3# cl2039996


    $facelist=@("HarmonyOS Sans SC Bold|30","HarmonyOS Sans SC Regular|25");
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

本帖最后由 cl2039996 于 2022-4-14 19:49 编辑

回复 4# zaqmlp


    z大佬,请让bat实现先清除后添加的功能
目前的代码依旧是要我手动选择清除或选择添加
求您再改一下

TOP

回复 5# cl2039996


  添加就是删除后再添加的,你不测试的吗,自己不断修改$facelist参数看看
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 6# zaqmlp


    果然果然!完美了!您想的比我周全多了!
我给您转款!

TOP

返回列表