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

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

Ветеран


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

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


R3m, на WSH:
читать дальше »
Код: Выделить весь код
Option Explicit

Const ForWriting = 2

Dim strSourceFile

Dim strContent
Dim strBackupFile


If WScript.Arguments.Count = 1 Then
	With WScript.CreateObject("Scripting.FileSystemObject")
		strSourceFile = .GetAbsolutePathName(WScript.Arguments.Item(0))
		
		If .FileExists(strSourceFile) Then
			With .OpenTextFile(strSourceFile)
				strContent = .ReadAll()
				.Close
			End With
			
			With WScript.CreateObject("VBScript.RegExp")
				.Global = True
				.IgnoreCase = True
				.Pattern = "\d{4}\.\d{2}"
				
				If .Execute(strContent).Count = 2 Then
					strContent = .Replace(strContent, CStr(Year(Now())) & "." & Right("00" & CStr(Month(Now())), 2))
				Else
					WScript.Echo "Found more than two matches by pattern."
					WScript.Quit 3
				End If
			End With
			
			strBackupFile = .BuildPath(.GetParentFolderName(strSourceFile), .GetBaseName(strSourceFile) & ".bak")
			
			If .FileExists(strBackupFile) Then
				.DeleteFile strBackupFile, True
			End If
			
			.CopyFile strSourceFile, strBackupFile, True
			
			With .OpenTextFile(strSourceFile, ForWriting)
				.Write strContent
				.Close
			End With
		Else
			WScript.Echo "Source file [" & strSourceFile & "] not found."
			WScript.Quit 2
		End If
	End With
Else
	WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " <Source file>"
	WScript.Quit 1
End If

WScript.Quit 0
  • Путь к исходному файлу указывается в командной строке скрипта. Можно указывать относительный путь.
  • Год/месяц для поиска указывать не нужно. Поиск года/месяца производится регулярным выражением. Если будет найдено именно два (как Вы указали) совпадения — будет произведена их замена на текущие год/месяц.
  • При замене создаётся резервная копия текущего исходного файла. Существующая старая резервная копия при этом удаляется.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:30, 18-07-2014 | #6