【发布时间】:2017-12-05 11:42:24
【问题描述】:
我已经缝合了一个脚本,在没有任何更深入的 cmd 知识的情况下,该脚本在目录中的指定文件中搜索某些字符串并将其替换为另一个。 (至少应该)
喜欢
set "search=readed"
set "replace=read"
set "myfiles=.\*.tex"
for %%f in (%myfiles%) do (
set /p val=<%%f
echo "fullname: %%f"
for /f "delims=" %%i in ('type %%f ^& break ^> %%f ') do (
set "line=%%i"
setlocal enabledelayedexpansion
>>%%f echo(!line:%search%=%replace%!)
endlocal
)
)
pause
几乎可以工作。它有两个问题。 第一 - 不太重要:删除空白行。 2nd - 删除感叹号。 之前:
% !TEX root = TechRep.tex
之后:
% TEX root = TechRep.tex
我可以寻求帮助吗?谢谢!
【问题讨论】:
-
删除
echo命令末尾的右括号。尽管看起来,它确实 not 匹配同一行的左括号!相反,它匹配do关键字之后的左括号。 -
这似乎工作正常。谢谢!
-
如果您正在使用纯批处理编辑文件以获得刺激(为了挑战),那么请把自己打倒。但是,如果您只是想完成一项任务,那么我强烈建议您做其他事情。纯批处理对于文本文件编辑来说很糟糕,因为它速度很慢,而强大的解决方案需要晦涩难懂、不直观的语法和技术。我推荐JREPL.BAT - a hybrid regular expression text processing utility that uses JScript and batch:
for %%F in (*.tex) do call jrepl "readed" "read" /f "%%F" /o - -
嗨!它并没有给我带来任何特别的快乐。无论机器及其配置,我只需要这些东西工作。使用我几乎知道的。
标签: loops batch-file for-loop cmd str-replace