求个替换文本内容的批处理或vbs
例如
aba%ab%ab%ab%
替换为
121%ab%12%ab%
最好能加点注释,感激不尽
我是要把a~z(大小写) 修 改 为 其 他 特 定 的 字 符 ( 并 不 是 1 2 3 4 ,只 是 暂 时 定 为 1234),并且 不 替 换 %和%, !和! 之 间 的 内 容 , 谢 谢 大 家 了
把abc%abc%abc!abc!abc
替换为123%abc%123!abc!123 展开
按你要求测试成功,请看附图~~~~~~~~~~
使用说明:将你的文件命名为A.txt,运行此批处理~~~~~~
注意:贴出来的批处理再复制过去要删去多余的空格,否则运行错误。很奇怪贴了几次还是一样,如果你自己还是弄不好,你给我消息留下邮箱我把批处理文件发你。
@echo off&cd.>okA.txt
for /f "delims=" %%i in ('type A.TXT') do (
set "str1="&set "str=%%i"&call:pd
setlocal EnableDelayedExpansion
for /f "delims=" %%k in ('type tmp2')do (
if exist tmp1 if "%%k"=="%% " (
(if "%%k"=="!m!" (type tmp1>>tmp3&del tmp1) else call:th)
) else ((if "%%k"=="! " if "%%k"=="!m!" (type tmp1>>tmp3&del tmp1) else call:th))
if not "%%k"=="%% " if not "%%k"=="! " echo %%k>>tmp1
if "%%k"=="%% " set "m=%% " & echo %% >>tmp3
if "%%k"=="! " set "m=! " & call:jt
)
if exist tmp1 call:th
setlocal disableDelayedExpansion
call:ebat
del tmp2
)
pause&start oka.txt&exit
:pd
setlocal EnableDelayedExpansion
for /l %%z in (0 1 1000)do (
if not "!str:~%%z,1!"=="" (
if "!str:~%%z,1!"=="!" (
echo ! >>tmp2
) else echo !str:~%%z,1! >>tmp2
))
exit /b pd
:jt
setlocal disableDelayedExpansion
echo ! >>tmp3&exit /b jt
:ebat
for /f %%k in ('type tmp3') do set "str3=%%k"&call:sm
setlocal disableDelayedExpansion
echo %str1% >>okA.txt
del tmp3 &echo 处理 %str% 为 %str1%
exit /b ebat
:sm
set "str1=%str1%%str3%"&exit /b sm
:th
for /f "delims=" %%a in ('type tmp1') do (
set "str2=%%a"
::以下请自己设定a~z值--------
set "str2=!str2:a=1!"
set "str2=!str2:b=2!"
set "str2=!str2:c=3!"
set "str2=!str2:d=4!"
::以上请自己设定a~z值--------
echo !str2! >>tmp3
)
del tmp1&exit/b th
参考资料: 鄙视刷分,刷分举报!!!
把一下内容保存为一文本文件,然后命名为“替换.vbs ”
然后把你要替换的文本拖到次文件上按照提示来操作即可
'批量文件字符串替换器
on error resume next
set arg=WScript.Arguments
if arg.count=0 then
msgbox "Usage:"&vbcrlf&vbcrlf&" 不要直接运行这个脚本,把需要进行字符串替换的一个或多个文件拖曳到这个脚本文件上来就可以了。",,"批量文件字符串替换器 By 千寂孤城"
wscript.quit
end if
do
content1=inputbox("请输入你要替换的字符串","批量文件字符串替换器")
if isempty(content1) then
respond=msgbox("EXIT?",1)
if respond=1 then
wscript.quit
end if
elseif content1<>"" then
exit do
end if
msgbox "你没有输入你要替换的字符串呀!",,"批量文件字符串替换器"
loop
do
content2=inputbox("想把"""&content1&"""替换成什么呀?","批量文件字符串替换器")
if isempty(content2) then
respond=msgbox("EXIT?",1)
if respond=1 then
wscript.quit
end if
else
exit do
end if
loop
set fso=createobject("scripting.filesystemobject")
for i=0 to arg.count-1
name=arg(i)
set file=fso.opentextfile(name,1)
if file.AtEndOfStream<>true then
content=file.readall
file.close
content=replace(content,content1,content2)
set file=fso.opentextfile(name,2)
file.write content
file.close
else
file.close
end if
next
msgbox "OK 替换结束!",,"批量文件字符串替换器"
参考资料: 对!!鄙视刷分,刷分举报!!!
Set objargs=WScript.Arguments
If objargs.Count<>1 Then
msgbox "请把文件拖到脚本上"
WScript.Quit
End If
Dim fpath
fpath=objargs.Item(0)
Dim objf,c,i,str
Set objfs=CreateObject("scripting.filesystemobject")
Set objf=objfs.OpenTextFile(fpath,1,False)
Do While objf.AtEndOfStream=False
c=objf.Read(1)
If c>="a" And c<="c" Then
c=Chr(Asc(c)-48)
End If
str=str & c
Loop
objf.Close
objfs.OpenTextFile(fpath,2,False).Write str
这个很简单我想用不着注释了,呵呵。
你说“a替换为1,b替换为2,c为3……”
这后面的点是什么意思?是接着d换为4吗?
test="abc%ab%ab%ab%ac"& vbCrLf &"ABc%AB%AB%AB%"& vbCrLf
Set atest = Fso.OpenTextFile("D:\a.txt", 8, True)
atest.Write test
atest.Close
Set aFile = Fso.OpenTextFile("D:\a.txt", 1, True) '打开文件
Do Until aFile.AtEndOfStream '循环每行
StrLine = aFile.ReadLine '提取行内容
StrD = Split(StrLine, "%") '以%符号为分隔为StrD数组
For i = 0 To UBound(StrD) '循环数组
If (i Mod 2) = 1 Then '判断奇偶
StrNew=StrNew &"%"& StrD(i) &"%" '保留StrD数组的偶数组字符串
Else
StrTmp = StrD(i)
For z = 1 To 26
StrTmp = Replace(StrTmp,Chr(96+z),z,1,-1,1)'替换StrD数组的奇数组字符串(for循环将a~z分别替换为1~26)
StrTmp = Replace(StrTmp,Chr(48+z),z,1,-1,1)'替换StrD数组的奇数组字符串(for循环将A~Z分别替换为1~26)
Next
StrNew=StrNew &StrTmp '奇偶数组字符串合并
End If
Next
StrNew = StrNew& vbCrLf '保留换行符
Loop
aFile.Close
Set bFile = Fso.OpenTextFile("D:\a_New.txt", 8, True)'写入新文件
bFile.Write StrNew
bFile.Close
'功能:把abc%abc%abc!abc!abc替换为123%abc%123!abc!123
'Demo 为自定义字符模板,第一位1对应a,第二位2对应b,以此类推.记得只有26个字母哦,多了也不起作用
Dim Demo
Demo = "1234567+-*/|()&^$#@~"
Dim Args
Set Args=WScript.Arguments
If Args.Count<>1 Then
msgbox "请把文件拖到脚本上"
WScript.Quit
End If
Dim fpath
fpath=Args.Item(0)
Dim FSO,File,temp,str,mark
Set FSO=CreateObject("scripting.filesystemobject")
Set File=FSO.OpenTextFile(fpath,1,False)
Do While File.AtEndOfStream=False
temp=File.Read(1)
if temp = "%" or temp = "!" then '判断%!并做标记
mark = mark + 1
if mark = 2 then
mark = 0
end if
end if
if temp>="a" And temp<="z" And mark = 0 then
temp = mid(demo,Asc(temp)-96,1)
end if
str=str & temp
Loop
if mark <> 0 then
msgbox "你的%或者!没有配对,请检查!"
else
File.Close
FSO.OpenTextFile(fpath,2,False).Write str
end if
2009-02-14