本帖最后由 aloha20200628 于 2024-12-7 18:24 编辑
回复 7# akari
批处版本是逐行处理,vbs版本是逐件(以文件为单位)处理,可见效率之差...
试试以下两个版本,均以文件为单位处理,效率明显高于批处版本。第二个版本首启略慢,但调用了.net的高速读写功能,处理大数据时可能会优势突显...
以下代码存为 test-1.bat 运行- 2>1/* ::
- @echo off & dir /b/s/a-d *.html>"-.-" & (cscript /nologo /e:jscript "%~f0" "-.-")
- del/q "-.-" &pause&exit/b */
- v=WSH.arguments, fso=WSH.createObject('scripting.filesystemobject'), fr=fso.opentextfile(v(0),1);
- while (!fr.atendofstream) {
- F=fr.readline(), f=fso.opentextfile(F,1), a=f.readall(), f.close();
- f=fso.opentextfile(F,2,true), f.write(a.replace(/c:\\a.jpg/gi, 'd:\\b.png')), f.close(); }
- fr.close(),WSH.quit();
复制代码 以下代码存为 test-2.bat 运行- <# ::
- @echo off &powershell "iex(${%~f0}|out-string)" &pause&exit/b
- #>
- dir *.html -recurse|%{ $s=[io.file]::readalltext($_,[text.encoding]::'default'); $s=$s -replace 'c:\\a.jpg', 'd:\b.png'; [io.file]::writeAlltext($_, $s,[text.encoding]::'default') }; exit
复制代码
|