Ветеран
Сообщения: 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
|