Board logo

标题: 【完成】50元求epub的替换 [打印本页]

作者: lxh623    时间: 2020-7-21 18:07     标题: 【完成】50元求epub的替换

本帖最后由 lxh623 于 2020-7-23 08:32 编辑

以前有个结果,当时是删除部分内容。
这次想替换内容。
上次在 http://www.bathome.net/thread-53745-1-1.html
文本a(UTF8)写入以下内容:
殤\t殤<span class="corr">【商shāng】</span>
上万行。想用\t(制表符)后面的内容替换\t前面的内容,地点是解包后的html和xhtml文件。

epub的批处理最好给出三个,一个解包,一个替换,一个打包。
上次是一个。

谢谢!
作者: zaqmlp    时间: 2020-7-21 19:25

本帖最后由 zaqmlp 于 2020-7-21 19:31 编辑
  1. @echo off
  2. rem 解包
  3. set "zipexe=C:\Program Files\7-Zip\7z.exe"
  4. set "oldfolder=D:\xxx\epub原件夹"
  5. set "newfolder=E:\yyy\epub解包后"
  6. if not exist "%zipexe%" (echo;"%zipexe%" not found&pause&exit)
  7. if not exist "%oldfolder%" (echo;"%oldfolder%" not found&pause&exit)
  8. if not exist "%newfolder%" (md "%newfolder%")
  9. for /f "delims=" %%a in ('dir /a-d/b/s "%oldfolder%\*.epub"') do (
  10.     echo;解包 "%%a"
  11.     echo;--------------------------------
  12.     "%zipexe%" x -tzip "%%a" -o"%newfolder%\%%~na\"
  13. )
  14. pause
  15. exit
复制代码

作者: zaqmlp    时间: 2020-7-21 19:49

本帖最后由 zaqmlp 于 2020-7-21 20:02 编辑
  1. <# :
  2. cls
  3. @echo off
  4. rem 替换
  5. mode con lines=5000
  6. cd /d "%~dp0"
  7. powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~dp0'"
  8. pause
  9. exit
  10. #>
  11. $path=$args[0].trimend('\');
  12. $txtfile=".\a.txt";
  13. $oldfolder="E:\yyy\epub解包后";
  14. $ext=@('.html', '.xhtml');
  15. $txtfile=$txtfile -replace '^\.',$path;
  16. if(-not (test-path -liter $txtfile)){Write-host ('"'+$txtfile+'" not found');exit;};
  17. if(-not (test-path -liter $oldfolder)){Write-host ('"'+$oldfolder+'" not found');exit;};
  18. $Utf8NoBom=New-Object System.Text.UTF8Encoding $False;
  19. $text=[IO.File]::ReadAllLines($txtfile, $Utf8NoBom);
  20. $folders=@(dir -liter $oldfolder|?{$_ -is [System.IO.DirectoryInfo]});
  21. for($i=0;$i -lt $folders.count;$i++){
  22.     write-host $folders[$i].FullName;
  23.     $files=@(dir -liter $folders[$i].FullName -recurse|?{($ext -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])});
  24.     for($j=0;$j -lt $files.count;$j++){
  25.         write-host $files[$j].FullName.substring($folders[$i].FullName.length);
  26.         $htmltext=[IO.File]::ReadAllText($files[$j].FullName, $Utf8NoBom);
  27.         for($k=0;$k -lt $text.count;$k++){
  28.             $arr=$text[$k] -split '\t',2;
  29.             $htmltext=$htmltext.replace($arr[0],$arr[1]);
  30.         };
  31.         [IO.File]::WriteAllText($files[$j].FullName, $htmltext, $Utf8NoBom);
  32.     };
  33. };
复制代码

作者: zaqmlp    时间: 2020-7-21 19:54

  1. @echo off
  2. rem 打包
  3. set "zipexe=C:\Program Files\7-Zip\7z.exe"
  4. set "oldfolder=E:\yyy\epub解包后"
  5. set "newfolder=E:\zzz\epub打包后"
  6. if not exist "%zipexe%" (echo;"%zipexe%" not found&pause&exit)
  7. if not exist "%oldfolder%" (echo;"%oldfolder%" not found&pause&exit)
  8. if not exist "%newfolder%" (md "%newfolder%")
  9. for /f "delims=" %%a in ('dir /ad/b "%oldfolder%\"') do (
  10.     echo;打包 "%oldfolder%\%%~nxa"
  11.     echo;-----------------------------------
  12.     if exist "%newfolder%\%%~nxa.epub" del /a /f /q "%newfolder%\%%~nxa.epub"
  13.     "%zipexe%" a -tzip "%newfolder%\%%~nxa.zip" "%oldfolder%\%%~nxa\*"
  14.     ren "%newfolder%\%%~nxa.zip" "%%~nxa.epub"
  15.     rem rd /s /q "%oldfolder%\%%~nxa\"
  16. )
  17. rem rd /s /q "%oldfolder%\"
  18. pause
  19. exit
复制代码

作者: lxh623    时间: 2020-7-23 08:18

回复 4# zaqmlp

感谢帮助,请查收。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2