Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Переименовать файл, не затрагивая его расширение - имя из буфера (http://forum.oszone.net/showthread.php?t=347305)

Dexter VVM 11-12-2020 14:02 2942648

Переименовать файл, не затрагивая его расширение - имя из буфера
 
Привет. Нашел в теме скрипт, но он переименовывает файл полностью, что убирает расширение. Скажите, пожалуйста, как переименовать с сохранением расширения файла?
Скрытый текст

Код:

Option Explicit

Dim strSourceObject
Dim strSourceFolder
Dim strSourceFile

Dim strDestObject


If WScript.Arguments.Count = 1 Then
        With WScript.CreateObject("Scripting.FileSystemObject")
                strSourceObject = .GetAbsolutePathName(WScript.Arguments.Item(0))
               
                If .FolderExists(strSourceObject) Then
                        strSourceFolder = strSourceObject
                       
                        strDestObject = Trim(WScript.CreateObject("htmlfile").parentWindow.clipboardData.getData("text"))
                       
                        If Len(strDestObject) > 0 Then
                                If Not StrComp(strSourceFolder, strDestObject, vbTextCompare) = 0 Then
                                        .MoveFolder strSourceFolder, strDestObject
                                Else
                                        WScript.Echo "Need new name of folder."
                                        WScript.Quit 4
                                End If
                        Else
                                WScript.Echo "User cancel input."
                                WScript.Quit 3
                        End If
                ElseIf .FileExists(strSourceObject) Then
                        strSourceFile = strSourceObject
                       
                        strDestObject = Trim(WScript.CreateObject("htmlfile").parentWindow.clipboardData.getData("text"))
                       
                        If Len(strDestObject) > 0 Then
                                If Not StrComp(strSourceFile, strDestObject, vbTextCompare) = 0 Then
                                        .MoveFile strSourceFile, strDestObject
                                Else
                                        WScript.Echo "Need new name of file."
                                        WScript.Quit 4
                                End If
                        Else
                                WScript.Echo "User cancel input."
                                WScript.Quit 3
                        End If
                Else
                        WScript.Echo "Can't find source file system object [" & WScript.Arguments.Item(0) & "]."
                        WScript.Quit 2
                End If
        End With
Else
        WScript.Echo "Usage: wscript.exe """ & WScript.ScriptName & """ <Source file system object>"
        WScript.Quit 1
End If

WScript.Quit 0


Iska 11-12-2020 15:16 2942654

Dexter VVM, там иное.

Опишите полностью, что Вам нужно.

Dexter VVM 11-12-2020 17:12 2942665

Iska, нужен пункт в контекстном меню файлов и папок "дать имя из буфера", которой запускает скрипт, меняющий имя файла на текст из буфера обмена и не меняющий/убирающий его расширение. Приведённый скрипт из другой темы переименовывает файл полностью, удаляя расширение.

Iska 11-12-2020 20:47 2942679

Dexter VVM, ясно. Не знаю, как Вам, а по мне F2, Shift-Insert, Enter всяко быстрее выбора из контекстного меню.

Но держите:
Скрытый текст
Код:

Option Explicit

Dim strSourceFile
Dim strNewName


If WScript.Arguments.Count = 1 Then
        With WScript.CreateObject("Scripting.FileSystemObject")
                strSourceFile = .GetAbsolutePathName(WScript.Arguments.Item(0))
               
                If .FileExists(strSourceFile) Then
                        strNewName = Trim(WScript.CreateObject("htmlfile").parentWindow.clipboardData.getData("text"))
                       
                        If Len(strNewName) > 0 Then
                                If Not StrComp(strSourceFile, strNewName, vbTextCompare) = 0 Then
                                        .MoveFile strSourceFile, strNewName & "." & .GetExtensionName(strSourceFile)
                                Else
                                        WScript.Echo "Need new name of file."
                                        WScript.Quit 4
                                End If
                        Else
                                WScript.Echo "User cancel input."
                                WScript.Quit 3
                        End If
                Else
                        WScript.Echo "Can't find source file [" & WScript.Arguments.Item(0) & "]."
                        WScript.Quit 2
                End If
        End With
Else
        WScript.Echo "Usage: wscript.exe """ & WScript.ScriptName & """ <Source file>"
        WScript.Quit 1
End If

WScript.Quit 0


Dexter VVM 12-12-2020 03:58 2942697

Iska, спасибо. Из контекстного меню привычнее.


Время: 21:26.

Время: 21:26.
© OSzone.net 2001-