【发布时间】:2019-07-02 23:55:33
【问题描述】:
我从 Stack Overflow 上的 another thread 改编了这个脚本。脚本有效,但由于搜索查询中的特殊字符(<、>、"、=)导致输出不正确。
基本上,我只需要找到<script src="https://d1tdp7z6w94jbb.cloudfront.net/js/jquery-3.3.1.min.js" type="text/javascript" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> 并将其删除即可。
setlocal EnableExtensions DisableDelayedExpansion
set "search=<script src="https://d1tdp7z6w94jbb.cloudfront.net/js/jquery-3.3.1.min.js" type="text/javascript" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>"
set "replace="
set "textFile=index.html"
set "rootDir=."
for %%j in ("%rootDir%\%textFile%") do (
for /f "delims=" %%i in ('type "%%~j" ^& break ^> "%%~j"') do (
set "line=%%i"
setlocal EnableDelayedExpansion
set "line=!line:%search%=%replace%!"
>>"%%~j" echo(!line!
endlocal
)
)
endlocal
我在 Stack Overflow 上发现了其他线程问同样的问题,但我无法理解它们的实现以及如何将它们应用于此脚本。
【问题讨论】:
-
我的测试表明
<和>是破坏性的东西,而不是引号。你得到的确切错误是什么? -
这个任务真的有必要使用批处理吗?还有很多其他工具可以更快更好地完成它。
-
感谢@SomethingDark,非常感谢您让我知道。问题是搜索条件显示在输出文件中。我认为这是因为“但谢谢你的澄清。
-
@montonero,它是为了易于使用(运行脚本不需要主机)和未来可配置性,无需重新编码。另外,我不是编码员,但对 .BAT 很熟悉,因为您必须从 3.5" 加载 MS-DOS。:)
标签: batch-file replace cmd special-characters