Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Переименовать файл, не затрагивая его расширение - имя из буфера

Ответить
Настройки темы
VBS/WSH/JS - Переименовать файл, не затрагивая его расширение - имя из буфера

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
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

Отправлено: 14:02, 11-12-2020

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Dexter VVM, там иное.

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

Отправлено: 15:16, 11-12-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 17:12, 11-12-2020 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 20:47, 11-12-2020 | #4


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 03:58, 12-12-2020 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Переименовать файл, не затрагивая его расширение - имя из буфера

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] переименовать файл - имя из буфера kuzmakzrezv1 Скриптовые языки администрирования Windows 24 13-01-2019 19:24
CMD/BAT - [решено] вставить в файл, его имя talmachka Скриптовые языки администрирования Windows 10 03-10-2015 07:03
CMD/BAT - [решено] Как записать информацию из буфера обмена в файл тхт батником? angel_lyucifer Скриптовые языки администрирования Windows 12 26-12-2012 17:22
CMD/BAT - [решено] найти файл и использовать его имя Mad Max Скриптовые языки администрирования Windows 4 19-07-2009 23:13
Как переименовать имя аккаунта в XP с изменением имени его папки и других файлов. Alikber Microsoft Windows 2000/XP 4 06-03-2006 00:15




 
Переход