jag försöker skriva en sida som döper om filnamn men något blir fel, antagligen annars skulle jag väl inte be er om hjälp, :)
[red] else
' response.write request ( "slctFldr" )[/red] --> [blue]D:\tmp[/blue][red]
call renameFiles
response.write "file(s) renamed"
end if
sub renameFiles ()
dim slctFldr, fs, f, fc, i, c, orgFile
slctFldr = request ( "slctFldr" )
set fs = server.createobject ( "scripting.filesystemobject" )
set f = fs.getfolder ( slctFldr )
set fc = f.files
for each i in fc
[/red]line 37 -->[blue] set c = getfile ( slctFldr & "\" & i )[/blue][red]
orgFile = i
i = replace ( i, "(", "[" )
i = replace ( i, ")", "]" )
i = replace ( i, "_", " " )
i = replace ( i, ".", " " )
' response.write slctFldr & "\" & i
c.copy ( slctFldr & "\" & i )
c.deletefile ( slctFldr & "\" & orgFile )
next
set fs = nothing
end sub[/red]
felmeddelande:
[red]Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'getfile'
/renamer.asp, line 37[/red]
pettssonMedlem sedan jan. 20021 122 inlägg ska det verkligen rad 2 i koden vara en kommentar?
båda kommentarerna har jag laggt till för att se vilken fil scritptet arbetar med.
.red [ stavar som en kratta :) ]
fixade det själv MEN det finns en gigantisk bug och ett problem.
bug: scriptet tar bort ursprungsfilerna. har inga filer kopierats har du ingen fil kvar i foldern :stud
problem: filändelser i markeras ju med den sista punkten och det är ett av tecknen som ska ersättas med mellanslag.
fråga: hur gör jag för att behålla filendelsen?
[red] else
call renameFiles
response.write "file(s) renamed"
end if
sub renameFiles ()
dim slctFldr, fs, f, fc, i, c, orgFile
slctFldr = request ( "slctFldr" )
set fs = server.createobject ( "scripting.filesystemobject" )
set f = fs.getfolder ( slctFldr )
set fc = f.files
for each i in fc
set c = fs.getfile ( i )
orgFile = i
i = replace ( i, "(", "[" )
i = replace ( i, ")", "]" )
i = replace ( i, "_", " " )
i = replace ( i, ".", " " )
c.copy ( lcase ( i ) )
fs.deletefile ( orgFile )
next
set fs = nothing
end sub[/red]
men se! jag löste det själv. frågan är om det finns ett bättre sätt?
[red]
else
call renameFiles
end if
sub renameFiles ()
dim slctFldr, fs, f, fc, i, c, orgFile, e, doLog, logFile
slctFldr = request ( "slctFldr" )
set fs = server.createobject ( "scripting.filesystemobject" )
set f = fs.getfolder ( slctFldr )
set fc = f.files
for each i in fc
set c = fs.getfile ( i )
orgFile = i
e = right ( i, len ( i ) - instrrev ( i, "." ) + 1 )
i = left ( i, ( instrrev ( i, "." ) ) - 1 )
i = replace ( i, "(", "[" )
i = replace ( i, ")", "]" )
i = replace ( i, "_", " " )
i = replace ( i, ".", " " )
if not orgFile = i & e then doLog = true else doLog = false
select case doLog
case true
c.copy ( lcase ( i & e ) )
fs.deletefile ( orgFile )
logFile = logFile & "<table cellpadding = '0' cellspacing = '0' border = '0'>" & vbcrlf & _
" <tr>" & vbcrlf & _
" <td>#copied: </td>" & vbcrlf & _
" <td>" & right ( orgFile, len ( orgFile ) - instrrev ( orgFile, "\" ) ) & "</td>" & vbcrlf & _
" <td> --> </td>" & vbcrlf & _
" <td>" & right ( i, len ( i ) - instrrev ( i, "\" ) ) & e & "</td>" & vbcrlf & _
" </tr>" & vbcrlf & _
" <tr>" & vbcrlf & _
" <td>#deleted: </td>" & vbcrlf & _
" <td colspan = '3'>" & right ( orgFile, len ( orgFile ) - instrrev ( orgFile, "\" ) ) & "</td>" & vbcrlf & _
" </tr>" & vbcrlf
case false
if logFile = "" then
logFile = logFile & "<table cellpadding = '0' cellspacing = '0' border = '0'>" & vbcrlf & _
" <tr>" & vbcrlf & _
" <td>#nothing renamed</td>" & vbcrlf & _
" </tr>" & vbcrlf & _
" <tr>" & vbcrlf & _
" <td>#nothing deleted</td>" & vbcrlf & _
" </tr>" & vbcrlf
exit for
else
logFile = logFile & "<table cellpadding = '0' cellspacing = '0' border = '0'>" & vbcrlf & _
" <tr>" & vbcrlf & _
" <td>#file: </td>" & vbcrlf & _
" <td>" & right ( orgFile, len ( orgFile ) - instrrev ( orgFile, "\" ) ) & "</td>" & vbcrlf & _
" <td> was not copied</td>" & vbcrlf & _
" </tr>" & vbcrlf & _
" <tr>" & vbcrlf & _
" <td>#file: </td>" & vbcrlf & _
" <td>" & right ( orgFile, len ( orgFile ) - instrrev ( orgFile, "\" ) ) & "</td>" & vbcrlf & _
" <td colspan = '2'> was not deleted</td>" & vbcrlf & _
" </tr>" & vbcrlf
end if
end select
next
set fs = nothing
logFile = logFile & "</table>"
response.write logFile
end sub[/red]