Страница: 1 |
Страница: 1 |
Вопрос: Переименование файлов
Добавлено: 11.12.06 21:15
Автор вопроса: Николай
Есть директория (например C:\TEST) в нее периодически перемещаются файлы (с неизвестными мне именами). Необходимо эти файлы периодически переименовывать (чтобы можно было обращаться к ним): '0001.xml', '0002.xml' и т.д.
Можно ли это написать на VBS и запустить фоновым процессом в Windows? Предназначен ли для этого VBS? И если это не очень сложно то помогите с кодом
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
JMP
Вопросов: 6
Ответов: 171
Профиль | | #1
Добавлено: 12.12.06 10:07
http://wincmd.ru/forum/viewtopic.php?p=6875&sid=210c7cfaec87ccbfa44a14819a0e00a3
Номер ответа: 2
Автор ответа:
Шпион
ICQ: 250543104
Вопросов: 13
Ответов: 118
Профиль | | #2
Добавлено: 12.12.06 10:19
On Error Resume Next
path="c:\temp"
new_ext="xml"
If Right(path,1)<>"\" Then path=path & "\"
Set objFSO=Createobject("Scripting.Filesystemobject"
Set objFolder=objFSO.GetFolder(path)
Set objFiles=objFolder.Files
For Each objFile In objFiles
fn=objFile.Filename
arr=split(fn,"."
fn2=""
For i=0 To Ubound(arr)-1
fn2=fn2 & arr(i) & "."
Next
objFSO.MoveFile path & fn, path & fn2 & new_ext
Next
Set objFile=Nothing
Set objFolder=Nothing
Set objFSO=Nothing
Номер ответа: 3
Автор ответа:
Николай
Вопросов: 3
Ответов: 5
Профиль | | #3
Добавлено: 12.12.06 11:16
Здравствуйте.
Спасибо за ответ. У меня возникла следующая проблема со скриптом:
Строка: 9
Ошибка: Объект не поддерживает это свойство или метод: 'objFile.Filename'
Номер ответа: 4
Автор ответа:
Николай
Вопросов: 3
Ответов: 5
Профиль | | #4
Добавлено: 12.12.06 11:42
Поменял
fn=objFile.Filename
на
fn=objFSO.GetFile(objFile).Name
ошибка исчезла, но меняет только расширение
Номер ответа: 5
Автор ответа:
JMP
Вопросов: 6
Ответов: 171
Профиль | | #5
Добавлено: 12.12.06 12:07
Судя по всему по ссылке
http://wincmd.ru/forum/viewtopic.php?p=6875&sid=210c7cfaec87ccbfa44a14819a0e00a3
не ходили
Посмотрите там пост от Batya, отвечено на все ваши вопросы и даже больше.
Номер ответа: 6
Автор ответа:
Шпион
ICQ: 250543104
Вопросов: 13
Ответов: 118
Профиль | | #6
Добавлено: 12.12.06 12:07
Да, извините, действительно, достаточно изменить Filename на Name и все прекрасно работает.
тогда вопрос, сколько нулей впереди должно быть?
т.е. формат имени файла 8.3?
Если да, то:
надо кусочек
For Each objFile In objFiles
fn=objFile.Filename
arr=split(fn,"."
fn2=""
For i=0 To Ubound(arr)-1
fn2=fn2 & arr(i) & "."
Next
objFSO.MoveFile path & fn, path & fn2 & new_ext
Next
заменить на:
For Each objFile In objFiles
fn=objFile.name
z=z+1
zz=ltrim(z)
If len(z)=8 Then
fn2=z & new_ext
ElseIf Len(z)<8 Then
fn2=String(8-Len(z),"0" & Ltrim(z) & new_ext
Else
Wscript.Quit
End If
objFSO.MoveFilepath & fn, path & fn2
next
Номер ответа: 7
Автор ответа:
Шпион
ICQ: 250543104
Вопросов: 13
Ответов: 118
Профиль | | #7
Добавлено: 12.12.06 12:08
черт! пробел потерял. внимательнее в последнем кусочке кода
Номер ответа: 8
Автор ответа:
Николай
Вопросов: 3
Ответов: 5
Профиль | | #8
Добавлено: 12.12.06 12:36
Спасибо. Заработало.