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

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

Ответить
Настройки темы
CMD/BAT - [решено] Переименование файлов в соотвествии с их заголовком

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


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


Конфигурация

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


Здравствуйте. Множество документов (почти 200) имеет такой вид: Found_22914216_32256.docx
Как можно автоматизировать их переименование по заголовку?

Отправлено: 21:30, 02-04-2014

 

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


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

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


Никто так и не ответит?

Отправлено: 21:59, 04-04-2014 | #2



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

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


Ветеран


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

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


daniil1018, в рамках заданной категории сие малореально. Тут нужен Automation — WSH, PoSH и т.п.

Если интересует — сразу укажите, что делать, если заголовки будут дублироваться.

Цитата daniil1018:
Множество документов (почти 200) имеет такой вид: Found_22914216_32256.docx »
Речь только про документы Microsoft Word или …?

Отправлено: 22:27, 04-04-2014 | #3


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


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

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


Цитата Iska:
Automation — WSH, PoSH и т.п »
можно и так
Цитата Iska:
Речь только про документы Microsoft Word или …? »
да, документы word

Отправлено: 08:41, 05-04-2014 | #4


Ветеран


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

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


daniil1018, Вы не ответили:
Цитата Iska:
Если интересует — сразу укажите, что делать, если заголовки будут дублироваться. »
Вы вынуждаете меня принимать решения самолично — будем уведомлять и пропускать.

Как-то так, пробуйте:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFile

Dim objWord

Dim strTitle
Dim strNewName


strSourceFolder = "E:\Песочница\0372"

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists(strSourceFolder) Then
		Set objWord = Nothing
		
		For Each objFile In .GetFolder(strSourceFolder).Files
			Select Case LCase(.GetExtensionName(objFile.Name))
				Case "doc", "docx"
					WScript.Echo objFile.Name
					
					If objWord Is Nothing Then
						Set objWord = WScript.CreateObject("Word.Application")
					End If
					
					With objWord.Documents.Open(objFile.Path)
						strTitle = Trim(.BuiltInDocumentProperties.Item("Title").Value)
						.Close
					End With
					
					If Len(strTitle) > 0 Then
						WScript.Echo vbTab, "Title:", strTitle
						
						strTitle = Replace(strTitle, "\",  "_")
						strTitle = Replace(strTitle, "/",  "_")
						strTitle = Replace(strTitle, ":",  "-")
						strTitle = Replace(strTitle, "*",  "_")
						strTitle = Replace(strTitle, "?",  "_")
						strTitle = Replace(strTitle, """", "'")
						strTitle = Replace(strTitle, "<",  "«")
						strTitle = Replace(strTitle, ">",  "»")
						strTitle = Replace(strTitle, "|",  "_")
						
						If .GetBaseName(objFile.Name) <> strTitle Then
							strNewName = strTitle & "." & .GetExtensionName(objFile.Name)
							
							If .FileExists(.BuildPath(strSourceFolder, strNewName)) Then
								WScript.Echo vbTab, "New file name [" & strNewName & "] already exists in [" & strSourceFolder & "] - skipping rename."
							Else
								WScript.Echo vbTab, "New file name [" & strNewName & "]."
								objFile.Name = strNewName
							End If
						Else
							WScript.Echo vbTab, "File name equal title already - nothing to do."
						End If
					Else
						WScript.Echo vbTab, "Empty title - skipping."
					End If
				Case Else
					' Nothing to do
			End Select
		Next
		
		If Not objWord Is Nothing Then
			objWord.Quit
			Set objWord = Nothing
		End If
	Else
		WScript.Echo "Source folder [" & strSourceFolder & "] not found."
		WScript.Quit 1
	End If
End With

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:03, 05-04-2014 | #5


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


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

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


Iska, Ладно, пусть пропускает, но на некоторых файлах выводит сообщение "Empty title - skipping"

Отправлено: 19:12, 05-04-2014 | #6


Ветеран


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

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


Цитата daniil1018:
но на некоторых файлах выводит сообщение "Empty title - skipping" »
Пустое значение поля «Заголовок» — свойства «.BuiltInDocumentProperties.Item("Title")». Не на что переименовывать. Оттого и пропускаем.

Отправлено: 21:37, 05-04-2014 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Переименование файлов в каталоге flower Скриптовые языки администрирования Windows 2 28-11-2013 15:00
CMD/BAT - [решено] Переименование файлов ashdinalt Скриптовые языки администрирования Windows 14 18-10-2011 19:26
CMD/BAT - Переименование файлов. gen0m.rsw Скриптовые языки администрирования Windows 1 15-10-2010 19:15
переименование файлов mask Программирование и базы данных 6 20-05-2003 00:53
Переименование файлов Pavelz Microsoft Windows NT/2000/2003 7 24-01-2003 10:32




 
Переход