Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


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

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


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

Const strTemplateFile      = "E:\Песочница\0288\01\шаблон.doc"
Const strDestinationFolder = "E:\Песочница\0288\02"


Dim strSourceFile
Dim strSourceFolder

Dim objFSO
Dim objFile
Dim objRegExp

Dim strNewFileName


If WScript.Arguments.Count = 1 Then
	With WScript.CreateObject("Scripting.FileSystemObject")
		strSourceFile   = .GetAbsolutePathName(WScript.Arguments.Item(0))
		strSourceFolder = .GetParentFolderName(strSourceFile)
		
		If .FileExists(strSourceFile) Then
			Set objFile   = .GetFile(strSourceFile)
			Set objRegExp = WScript.CreateObject("VBScript.RegExp")
			
			objRegExp.Pattern = "^((?:MO|RO|DT)_\d{3}_)(\d{3})(\.doc)$"
			
			If objRegExp.Test(objFile.Name) Then
				With objRegExp.Execute(objFile.Name).Item(0)
					strNewFileName = .SubMatches(0) & Right("000" & CStr(CLng(.SubMatches(1)) + 1), 3) & .SubMatches(2)
				End With
				
				If .FileExists(strTemplateFile) Then
					.CopyFile strTemplateFile, .BuildPath(strSourceFolder, strNewFileName), True
				Else
					WScript.Echo "Can't find template file [" & strTemplateFile & "]."
				End If
				
				If .FolderExists(strDestinationFolder) Then
					objFile.Name = .GetBaseName(objFile.Name) & "_R." & .GetExtensionName(objFile.Name)
					objFile.Copy strDestinationFolder & "\", True
					objFile.Delete True
				Else
					WScript.Echo "Can't find destination folder [" & strDestinationFolder & "]."
				End If
			Else
				WScript.Echo "Source file [" & strSourceFile & "] not match for pattern [" & objRegExp.Pattern & "]."
			End If
			
			Set objRegExp = Nothing
			Set objFile   = Nothing
		Else
			WScript.Echo "Can't find source file [" & strSourceFile & "]."
		End If
	End With
Else
	WScript.Echo "Usage: wscript.exe """ & WScript.ScriptName & """ <Source file>"
End If

WScript.Quit 0

Примечания:

читать дальше »
1. Имя файла должно удовлетворять шаблону: два символа имени отдела — одно из «MO», «RO», «DT» (если потребны другие — добавляйте в шаблон); знак подчёркивания; обязательные три цифры; знак подчёркивания; обязательные три цифры; точка между именем и расширением; расширение «doc».

2. Все существующие файлы перезаписываются без запроса. Например, если в папке назначения («готово») будет существовать файл с тем же именем, что и выбранный для обработки исходный файл — он будет молча перезаписан. И т.п.

3. Наиболее удобно будет работать со сценарием, дав ему какое-либо осмысленное имя (например, «Отправить на дальнейшую обработку.vbs») и создав на него ярлык в папке «%UserProfile%\SendTo» (ярлык тоже стоит переименовать, убрав начальное «Ярлык на…»). Затем достаточно будет просто щёлкнуть по потребному для обработки файлу правой клавишей мышки и выбрать из контекстного меню «Отправить → Отправить на дальнейшую обработку».

Отправлено: 12:06, 03-07-2013 | #4