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

[文本处理] [已解决]批处理替换文本里的内容都是一行行的换,有什么办法让他快起来吗?

  1. cd /d %~dp0
  2. setlocal enabledelayedexpansion
  3. set strNew=
  4. for /f "delims=*" %%m in ('type "C:\1.txt"') do (
  5. for /f "delims=*" %%a in ('dir/b/s *.htm *.txt') do (
  6. for /f "delims=*" %%i in ('type "%%a"') do (
  7. set var=%%i
  8. set "var=!var:%%m=%strNew%!"
  9. if defined var (
  10. echo !var!!>>%%a.bk
  11. )
  12. )
  13. move "%%a.bk" "%%a"
  14. )
  15. )
复制代码
我是想用C:\1.txt里每一换去替换 当前文件夹*.htm *.txt的所有文件里的内容 但是需要每一行去替换太慢了,有没有快点的方法呢
1

评分人数

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

批处理里面输出是挺费时的。
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

本帖最后由 miqilaosu 于 2019-5-20 09:35 编辑

回复 13# Batcher


    谢谢@Batcher大神,好利害,一下快了几十倍,原来还可以这样写,又学到了一种方法,以前跟本没想过还可以用ECHO连续输出,最后写到TXT里
我是想批量替换同一目录下的网站模板代码内容(比如当前页源码),都是html,txt文件,

TOP

回复 8# miqilaosu
  1. @echo off
  2. cd /d %~dp0
  3. setlocal enabledelayedexpansion
  4. set strNew=
  5. for /f "delims=*" %%m in ('type "C:\1.txt"') do (
  6.     for /f "delims=*" %%a in ('dir /b /s *.htm *.txt') do (
  7.         (for /f "delims=*" %%i in ('type "%%a"') do (
  8.             set var=%%i
  9.             set "var=!var:%%m=%strNew%!"
  10.             if defined var (
  11.                 echo,!var!!
  12.             )
  13.         ))>"%%a.bk"
  14.         move "%%a.bk" "%%a"
  15.     )
  16. )
复制代码
把重定向操作放在外面可以提交效率。
如果希望进一步加速,请举例说明你想如何替换文本内容。
1

评分人数

    • miqilaosu: 感谢给帖子标题标注[已解决]字样技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# miqilaosu

赞助下吧,我帮你写个
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 10# miqilaosu


    查下sed工具及其用法吧。
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

回复 9# amwfjhh

之前的问题解决了,但是发现批处理一行行替换太慢了,有没有什么快速的方法替换呢

TOP

你这个帖子设置有问题,所有回复仅楼主可见,可能你回复别人了,但是居然看不到回复自己的内容
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

本帖最后由 miqilaosu 于 2019-5-19 13:53 编辑

谢谢客位指导终于想明白了空行我不执行就行了,进入了误区
cd /d %~dp0
setlocal enabledelayedexpansion
set strNew=
for /f "delims=*" %%m in ('type "C:\1.txt"') do (
for /f "delims=*" %%a in ('dir/b/s *.htm *.txt') do (
for /f "delims=*" %%i in ('type "%%a"') do (
set var=%%i
set "var=!var:%%m=%strNew%!"
if defined var (
echo !var!!>>%%a.bk
)
)
move "%%a.bk" "%%a"
)
)

TOP

回复 3# miqilaosu


    就是因为单行空,未有输出信息,就你直接输入一个ECHO回车是一个效果,解决就是后面跟个,或点,将echo命令的分割符由空格变为这两个字符,就可以正常输出空行了。
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

回复 5# miqilaosu
echo空格 改成 echo;
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 4# zaqmlp
主要是去掉这个错误变成空就行

TOP

单发错误的代码,又没说原本的问题,谁知道你要干嘛
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 2# amwfjhh


    主要是不知道改哪里
因为把单个行给变量了,只有单个行空的时候报这个错,可我不知道怎么改了

TOP

将echo后面的空格换为,或者.即可
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

返回列表