标题: [文本处理] [已解决]批处理替换文本里的内容都是一行行的换,有什么办法让他快起来吗? [打印本页]
作者: miqilaosu 时间: 2019-5-19 10:01 标题: [已解决]批处理替换文本里的内容都是一行行的换,有什么办法让他快起来吗?
- 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"
- )
- )
复制代码
我是想用C:\1.txt里每一换去替换 当前文件夹*.htm *.txt的所有文件里的内容 但是需要每一行去替换太慢了,有没有快点的方法呢
作者: amwfjhh 时间: 2019-5-19 11:30
将echo后面的空格换为,或者.即可
作者: miqilaosu 时间: 2019-5-19 11:36
回复 2# amwfjhh
主要是不知道改哪里
因为把单个行给变量了,只有单个行空的时候报这个错,可我不知道怎么改了
作者: zaqmlp 时间: 2019-5-19 12:06
单发错误的代码,又没说原本的问题,谁知道你要干嘛
作者: miqilaosu 时间: 2019-5-19 12:34
回复 4# zaqmlp
主要是去掉这个错误变成空就行
作者: zaqmlp 时间: 2019-5-19 12:44
回复 5# miqilaosu
echo空格 改成 echo;
作者: amwfjhh 时间: 2019-5-19 13:03
回复 3# miqilaosu
就是因为单行空,未有输出信息,就你直接输入一个ECHO回车是一个效果,解决就是后面跟个,或点,将echo命令的分割符由空格变为这两个字符,就可以正常输出空行了。
作者: miqilaosu 时间: 2019-5-19 13:30
本帖最后由 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"
)
)
作者: amwfjhh 时间: 2019-5-19 13:49
你这个帖子设置有问题,所有回复仅楼主可见,可能你回复别人了,但是居然看不到回复自己的内容
作者: miqilaosu 时间: 2019-5-19 14:56
回复 9# amwfjhh
之前的问题解决了,但是发现批处理一行行替换太慢了,有没有什么快速的方法替换呢
作者: amwfjhh 时间: 2019-5-19 15:31
回复 10# miqilaosu
查下sed工具及其用法吧。
作者: zaqmlp 时间: 2019-5-19 15:35
回复 10# miqilaosu
赞助下吧,我帮你写个
作者: Batcher 时间: 2019-5-19 17:42
回复 8# miqilaosu - @echo off
- 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"
- )
- )
复制代码
把重定向操作放在外面可以提交效率。
如果希望进一步加速,请举例说明你想如何替换文本内容。
作者: miqilaosu 时间: 2019-5-20 09:29
本帖最后由 miqilaosu 于 2019-5-20 09:35 编辑
回复 13# Batcher
谢谢@Batcher大神,好利害,一下快了几十倍,原来还可以这样写,又学到了一种方法,以前跟本没想过还可以用ECHO连续输出,最后写到TXT里
我是想批量替换同一目录下的网站模板代码内容(比如当前页源码),都是html,txt文件,
作者: amwfjhh 时间: 2019-5-21 09:28
批处理里面输出是挺费时的。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |