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

[文本处理] [已解决]批量修改文本的批处理如何提高效率?

本帖最后由 lateol 于 2012-11-12 00:46 编辑

这代码程序 处理的TXT 有点慢。不是慢,是很慢.....
遇到1~2M的文件就需要等很久。我希望能像超级文本替换器一样 几秒就可以处理完成。
请教高手们 修改优化一下。这程序就有三点要求:
1.把指定要输入的文件路径改成 当前目录所有txt文件,或则拖动多个文本到窗口。(注:是拖动多个文本到窗口等于说窗选多个文件并处理)
2.输入即将被替换的内容 直接在程序里面设为G54
3.输入替换字符串 G54.1P*** 最好能把G54.1P固定了 后面***输入相应的数 如”G54.1P2“等作为替换字符串。
以下是代码,望高手们产考产考。就算感觉处理太慢了。拜托了!
  1. @echo off
  2. set "fs=%*"
  3. if "%fs%"=="" set/p fs=用鼠标拖入要处理的文件(直接回车取当前文件夹所有txt文件):
  4. if "%fs%"=="" for /f "delims=" %%i in ('dir/b *.txt')do call set fs=%%fs%% "%%~fi"
  5. set s1=G54
  6. set s2=G54 IP
  7. set "s3="
  8. set/p "s3=请输入替换数: %s2%"
  9. set s2=%s2%%s3%
  10. echo 正在处理...
  11. for %%i in (%fs%)do (
  12.   cd/d "%%~dpi"
  13.   echo %%~nxi
  14.   (for /f "tokens=1* delims=:" %%j in ('type "%%~nxi"^|findstr/n .*')do (
  15.     set "h=y%%k"
  16.     setlocal enabledelayedexpansion
  17.     set "h=!h:%s1%=%s2%!"
  18.     echo.!h:~1!
  19.     endlocal))>temp.yky
  20.   move temp.yky "%%~nxi")
  21. set/p=处理完毕,按任意键退出... <nul
  22. pause>nul
复制代码
感谢各位!小弟感激不尽。。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

中间的
  1.     (for /f "tokens=1* delims=:" %%j in ('type "%%~nxi"^|findstr/n .*')do (
  2.     set "h=y%%k"
  3.     setlocal enabledelayedexpansion
  4.     set "h=!h:%s1%=%s2%!"
  5.     echo.!h:~1!
  6.     endlocal))>temp.yky
复制代码
改成
  1.     (for /f "tokens=1* delims=:" %%j in ('findstr/n .* "%%~nxi"')do (
  2.     set "h=y%%k"
  3.     setlocal enabledelayedexpansion
  4.     set "h=!h:%s1%=%s2%!"
  5.     echo(!h:~1!
  6.     endlocal))>temp.yky
复制代码
应该会提升不小的效率

TOP

本帖最后由 tmplinshi 于 2012-11-8 08:34 编辑
  1. @echo off
  2. setlocal
  3. set from=G54
  4. set _to=G54.1P
  5. set file_list=*.txt
  6. set /p file_list=用鼠标拖入要处理的文件(直接回车取当前文件夹所有txt文件):
  7. echo,
  8. echo 请输入新字符↓
  9. echo,
  10. echo     旧字符: %from%
  11. set /p to_=    新字符: %_to%
  12. echo,
  13. echo 正在处理...
  14. fr %file_list% -f:"%from%" -t:"%_to%%to_%"
  15. set /p =处理完毕,按任意键退出. . . <nul
  16. pause >nul
复制代码
fr.exe 下载地址: http://baiy.cn/utils/fr/index.htm

TOP

回复 3# tmplinshi


    谢谢你的帮忙..但是我试了一下
    fr不是 内部或外部命令 怎么回事呢?

TOP

回复 2# CrLf


    谢谢。可感觉还是一样呀....

TOP

回复  tmplinshi


    谢谢你的帮忙..但是我试了一下
    fr不是 内部或外部命令 怎么回事呢?
lateol 发表于 2012-11-8 18:12



    代码下面有写 fr 的下载地址。
1

评分人数

    • lateol: 不好意思,新手所以晚了,非常感谢你的帮助 ...技术 + 1

TOP

回复 6# tmplinshi


    非常感谢您!终于解决了,冒然问一下,
请问如果 文本内的这一段字符串有如下类似:
M05
M09
M30
%
%
把这整段在一起字符都 替换掉 不要了。(不是单个字符替换,会把其也换掉的)可以弄么?
求指教!谢谢。

TOP

返回列表