1

Тема: VBS Скрипт переименования файла в кол-во дней с последней модификации

Добрый день!

Я полный новичок в написании скриптов VBS. Возникла задача написать скрипт, который в каталоге для файла, например, 2.txt переименует его в файл (количество дней от текущей даты - дата последней модификации этого файла)2.txt.

Вот мои попытки, но что-то не получается, прошу помочь.

set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\Logs\")

For Each eFile in Folder.Files=".txt"

Dim d1
Dim d2
Dim razn
d1 = DateLastModifed
d2=Date
razn = d2 - d1
FSO.MoveFile "2.txt", razn&"2.txt"

2 (изменено: Xameleon, 2010-12-27 18:35:32)

Re: VBS Скрипт переименования файла в кол-во дней с последней модификации

Option Explicit
Dim fso, folder, file, newname
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(".")
for each file in folder.files
    if LCase(fso.GetExtensionName(file.name)) = "txt" Then
        newname = DatePart("d",now-file.DateLastModified) & fso.GetBaseName(file.name) & ".txt"
        file.name = newname
    End if
next

Если я правильно понял, то как то так.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3

Re: VBS Скрипт переименования файла в кол-во дней с последней модификации

Пока всё получается, спасибо большое.

4

Re: VBS Скрипт переименования файла в кол-во дней с последней модификации

А можно ли в этом коде сделать так, чтобы при помощи ввода конкретного каталога (команда inputbox как я поняла из прочитанного в интернете) перебор файлов происходил именно в этом каталоге?

5

Re: VBS Скрипт переименования файла в кол-во дней с последней модификации

IrinaVZ, можно. Что у Вас не получается?

6

Re: VBS Скрипт переименования файла в кол-во дней с последней модификации

Option Explicit
Dim fso, folder, file, newname, katalog
inputBOX katalog
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(".")
for each file in folder.files
    if LCase(fso.GetExtensionName(file.name)) = "txt" Then
        newname =int(Date-file.DateLastModified) & fso.GetBaseName(file.name) & ".txt"
if file.name <> newname Then file.name = newname

    End if
next

Вот скрипт, но перебор файлов идет в том каталоге, в котором находится сам скрипт, а необходимо, чтобы перебор файлов происходил в том каталоге, который мы вводим. Я не могу понять как это сделать.

7

Re: VBS Скрипт переименования файла в кол-во дней с последней модификации

Например, так:

Option Explicit

Dim strPath

Dim objFSO
Dim objFolder
Dim objFile


strPath = Trim(InputBox("Введите путь:"))

If Len(strPath) <> 0 Then
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    
    If objFSO.FolderExists(strPath) Then
        Set objFolder = objFSO.GetFolder(strPath)
        
        For Each objFile In objFolder.Files
            If UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("txt") Then
                objFile.Name = DateDiff("d", objFile.DateLastModified, Now) & "_" & objFile.Name
            End If
        Next
        
        Set objFolder = Nothing
    Else
        WScript.Echo "Folder [" & strPath & "] not found."
    End If
    
    Set objFSO = Nothing
End If

WScript.Quit

Или так:

Option Explicit

Dim strPath

Dim objFSO
Dim objFolder
Dim objFile


strPath = Trim(BrowseForFolder("shell:Desktop"))

If Len(strPath) <> 0 Then
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    
    If objFSO.FolderExists(strPath) Then
        Set objFolder = objFSO.GetFolder(strPath)
        
        For Each objFile In objFolder.Files
            If UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("txt") Then
                objFile.Name = DateDiff("d", objFile.DateLastModified, Now) & "_" & objFile.Name
            End If
        Next
        
        Set objFolder = Nothing
    Else
        WScript.Echo "Folder [" & strPath & "] not found."
    End If
    
    Set objFSO = Nothing
End If

WScript.Quit

Function BrowseForFolder(strRootFolder)
    Const BIF_RETURNONLYFSDIRS    = &H0001
    Const BIF_USENEWUI            = &H0050
    Const BIF_UAHINT              = &H0100
    
    Dim objShell
    Dim objRootFolder
    Dim objSelectedFolder
    
    Dim intOptions
    
    
    Set objShell      = WScript.CreateObject("Shell.Application")
    Set objRootFolder = objShell.NameSpace(strRootFolder)
    
    intOptions        = BIF_RETURNONLYFSDIRS Or BIF_USENEWUI Or BIF_UAHINT
    
    Set objSelectedFolder = objShell.BrowseForFolder(0, "Укажите папку:", intOptions, objRootFolder)
    
    If Not objSelectedFolder Is Nothing Then
        BrowseForFolder = objSelectedFolder.Self.Path
        
        Set objSelectedFolder = Nothing
    End If
    
    Set objRootFolder        = Nothing
    Set objShell             = Nothing
End Function

8

Re: VBS Скрипт переименования файла в кол-во дней с последней модификации

СПАСИБО ОГРОМНОЕ!!!

9

Re: VBS Скрипт переименования файла в кол-во дней с последней модификации

Добрый вечер!

Помогите, пожалуйста, написать скрипт.
Задание: переименование файлов с определенным расширением.

10

Re: VBS Скрипт переименования файла в кол-во дней с последней модификации

Milena пишет:

Помогите, пожалуйста, написать скрипт.

Это называется — сделайте за меня. Что было сделано с Вашей стороны для решения задачи?