找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22266|回复: 5

[文本处理] 批处理修改文件内的数值问题

[复制链接]
发表于 2023-11-30 11:57:22 | 显示全部楼层 |阅读模式
想修改.ass文件中第四行的PlayResX: 数值为188,以下为ass文件前几段内容

[Script Info]
; Script generated by FFmpeg/Lavc60.3.100
ScriptType: v4.00+
PlayResX: 384
PlayResY: 288
ScaledBorderAndShadow: yes
YCbCr Matrix: None

只需要修改第四行的PlayResX: 为PlayResX: 188

以下是我弄得代码,求大佬指教~
  1. @echo off  
  2. setlocal enabledelayedexpansion  
  3. for /f "delims=" %%a in (*.ass) do (  
  4.     set "str=%%a"  
  5.     if not "!str:PlayResX:=!"=="!str!" (  
  6.         for /f "tokens=*" delims=: %%b in ("%%a") do (  
  7.             set "str=%%b"  
  8.             set "num=188"  
  9.             set "newStr=PlayResX: !num!"  
  10.             echo,!newStr!  
  11.         )  
  12.     )  
  13. )  
  14. pause
复制代码
发表于 2023-11-30 14:53:58 | 显示全部楼层
浏览器地址栏输入 ini site:bathome.net 搜索相关帖子,试一下能自己写出来不
发表于 2023-12-1 07:27:32 | 显示全部楼层
这样行不?输入文件1.ass,编码gbk,输出文件2.ass

  1. @echo off  
  2. (
  3. set /p line1=
  4. set /p line2=
  5. set /p line3=
  6. )<1.ass
  7. set "line4=PlayResX: 188"
  8. setlocal enabledelayedexpansion  
  9. (
  10. echo,!line1!
  11. echo,!line2!
  12. echo,!line3!
  13. echo,!line4!
  14. more +4 1.ass
  15. )>2.ass
  16. endlocal&pause&exit/b
复制代码
发表于 2023-12-1 09:50:56 | 显示全部楼层
回复 1# 小白来了

第3方工具sed( http://bcn.bathome.net/tool/4.9/sed.exe )实现方法如下:

  1. @echo off  
  2. for /f "delims=" %%a in ('dir /b /s *.ass') do @sed -r -i.bak "/^PlayResX:.+$/cPlayResX: 188" "%%a"
  3. pause
复制代码
发表于 2023-12-1 10:03:04 | 显示全部楼层
判断每行字符。前面是否为PlayResX:如果不是就不处理,否则,直接输入PlayResX:188
发表于 2023-12-1 10:39:48 | 显示全部楼层
回复 1# 小白来了
  1. @echo off
  2. set "OldFolder=C:\Test\From"
  3. set "NewFolder=C:\Test\To"
  4. setlocal enabledelayedexpansion
  5. for %%i in ("%OldFolder%\*.ass") do (
  6.     set "str=%%i"
  7.     echo,!str!
  8.     (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%%i"') do (
  9.         if not "%%b" == "" (
  10.             set "ThisRow=%%b"
  11.             if "!ThisRow:PlayResX:=!" == "!ThisRow!" (
  12.                 echo,!ThisRow!
  13.             ) else (
  14.                 echo,PlayResX: 188
  15.             )
  16.         ) else (
  17.             echo,
  18.         )
  19.     ))>"%NewFolder%\%%~nxi"
  20. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:35 , Processed in 0.019134 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表