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

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

Ветеран


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

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


LukAleX, попробуйте так (WSH):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFolder
Dim strFileNamePattern

Dim objFSO
Dim objFile

Dim strNewFileName

Dim strTempFolder
Dim iCount


strSourceFolder    = "C:\Мои проекты\0001"
strFileNamePattern = ".*(PA\-.{4}).*(\.pdf)"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(strSourceFolder) Then
	With WScript.CreateObject("VBScript.RegExp")
		.IgnoreCase = True
		.Pattern    = strFileNamePattern
		
		strTempFolder = objFSO.CreateFolder(GetTemporaryName()).Path
		
		For Each objFile In objFSO.GetFolder(strSourceFolder).Files
			If .Test(objFile.Name) Then
				With .Execute(objFile.Name).Item(0).Submatches
					strNewFileName = objFSO.BuildPath(strTempFolder, .Item(0) & .Item(1))
					iCount = 2
					
					Do While objFSO.FileExists(strNewFileName)
						strNewFileName = objFSO.BuildPath(strTempFolder, .Item(0) & "-" & CStr(iCount) & .Item(1))
						iCount = iCount + 1
					Loop
					
					objFile.Move strNewFileName
				End With
			End If
		Next
		
		objFSO.MoveFile objFSO.BuildPath(strTempFolder, "*.*"), strSourceFolder
		objFSO.DeleteFolder strTempFolder, True
	End With
Else
	WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
	WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
' Серый форум / vbscript: генерация пути для временного файла или папки
' (http://forum.script-coding.com/viewtopic.php?id=1221)
'=============================================================================
Function GetTemporaryName()
	Const TemporaryFolder = 2
	
	Dim strTempName
	
	With WScript.CreateObject("Scripting.FileSystemObject")
		Do
			strTempName = .BuildPath(.GetSpecialFolder(TemporaryFolder), .GetTempName)
		Loop While .FileExists(strTempName) Or .FolderExists(strTempName)
	End With
	
	GetTemporaryName = strTempName
End Function
'=============================================================================

Нумерацию я таки сделал с двойки, а не с единицы.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:30, 01-08-2016 | #3