Sagt som gjort.
skrev ett litet program som autotabbar alla aspfiler i en katalog.
se koden nedan, fattas lite reg.exp. för funktioner och subs men annars fungerar det fint.
<%
'Fixar till alla .asp filer i denna dir.
'Backup/ är backmål.
katalog = "test/"
on error resume next
Set MyDirectory=Server.CreateObject("Scripting.FileSystemObject")
Set MyFiles=MyDirectory.GetFolder(Server.MapPath(katalog))
Set fs=Server.CreateObject("Scripting.FileSystemObject")
if not fs.FolderExists(server.mappath(katalog & "backup/")) = true then
fs.CreateFolder(server.mappath(katalog & "backup/"))
end if
For Each filefound In MyFiles.files
filnamn = filefound.Name
fil = ""
if right(filnamn,3) = "asp" then
if fs.FileExists(server.mappath(katalog & "backup/"&filnamn)) = true then
fs.DeleteFile server.mappath(katalog & "backup/"&filnamn)
end if
fs.MoveFile server.mappath(katalog & filnamn),server.mappath(katalog & "backup/"&filnamn)
Set f=fs.OpenTextFile(Server.MapPath(katalog & "backup/"&filnamn),1)
do while f.AtEndOfStream = false
fil = fil & replace(replace(f.ReadLine,vbtab,"")," ","") & "+++++"
loop
f.Close
Set f=Nothing
fil = split(fil,"+++++",-1)
Set objRegExp = New regexp
objRegExp.Global = True
objRegExp.IgnoreCase = True
patt_up = "IF(.*?)THEN|ELSEIF(.*?)THEN|ELSE|DO(.*?)WHILE(.*?)|DO(.*?)UNTIL(.*?)|^FOR(.*?)\=(.*?)TO(.*?)"
patt_down = "END(.*?)IF|ELSEIF(.*?)THEN|ELSE|^LOOP|^NEXT"
tab = 0
set f=fs.CreateTextFile(server.mappath(katalog & filnamn),true)
for i = 0 to ubound(fil)
tmp = ""
objRegExp.Pattern = patt_down
Set myMatches = objRegExp.Execute(fil(i))
For each item in myMatches
tab = tab - 1
next
for k = 0 to tab-1
tmp = tmp & vbtab
next
'Skriver till filen
f.WriteLine(tmp & fil(i))
objRegExp.Pattern = patt_up
Set myMatches = objRegExp.Execute(fil(i))
For each item in myMatches
tab = tab + 1
next
next
f.Close
set f=nothing
response.write filnamn & " är fixad.<br>"
end if
Next
set fs=nothing
Set MyDirectory= Nothing
Set MyFiles= Nothing %>