有几百个*.htm网页文件,均含有ABCD这个固定字符,想通过批处理把这几百个网页文件的ABCD这个固定字符替换成DCBA,请问如何写?
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@echo off
for /f "delims=" %%a in ('dir /s /b /a-d *.html') do (
for /f "tokens=*" %%i in ('type "%%a"') do call :slz "%%a" "%%i"
)
pause
:slz
set xxx=%~1
if not defined xxx goto:eof
set var=%~2
set "var=%var:ABCD=DCBA%"
>>"%~dpn1.tmp" echo %var%
move /y "%~dpn1.tmp" "%~1"
goto:eofOriginally posted by fastslz at 2007-11-17 23:05:
哦忽略了要处理html都有特殊字符><的,建议还是用sed,貌似sed也会出现问题的,html特殊字符是避免不了的。至于你说的sedDOSSUX,你可以用3.05版的sed,或者ssed
Originally posted by lxmxn at 2007-11-17 23:40:
sed 如何完成 ?
Set WshShell = CreateObject("Wscript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
abcd = "Table"
dcba = "DCBA"
WshShell.Run "cmd /c cd.>list.txt",vbhid,True
WshShell.Run "cmd /c dir /b /s /on /a-d *.htm>>list.txt",,True
Set fl = fso.OpenTextFile("list.txt",1)
While not fl.AtEndOfStream
htmlfile = fl.ReadLine
Set fn = fso.GetFile(htmlfile)
Newname = Replace(htmlfile,fn.name,"str-" & fn.name)
Set fr = fso.OpenTextFile(htmlfile,1)
str = Replace(fr.ReadAll,abcd,dcba,1,-1,1)
Set fw = fso.CreateTextFile(Newname,2,Turn)
fw.WriteLine str
fw.Close
fr.Close
Wend
fl.Close
msgbox "OK!"
Originally posted by fastslz at 2007-11-17 23:05:
哦忽略了要处理html都有特殊字符><的,建议还是用sed,貌似sed也会出现问题的,html特殊字符是避免不了的。至于你说的sedDOSSUX,你可以用3.05版的sed,或者ssed
@echo off
for /r %%i in (*.htm) do (
for /f "delims=" %%a in ('findstr /n .* "%%i"') do (
set list=%%a
setlocal enabledelayedexpansion
set list=!list:*:=!
set list=!list:ABCD=DCBA!
echo/!list! >>"%%i.tmp"
endlocal
)
move /y "%%i.tmp" "%%i" 2>NUL
)
pause