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

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

Ветеран


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

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


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

Const ForReading   = 1
Const ForWriting   = 2


Dim objArgs
Dim objFSO
Dim objFile

Dim strWhatFind
Dim strReplaceBy

Dim strContent


Set objArgs = WScript.Arguments.Named

If objArgs.Count = 4 Then
	Set objFSO  = WScript.CreateObject("Scripting.FileSystemObject")
	
	If objArgs.Exists("FolderForScan") Then
		If objArgs.Exists("FileExtension") Then
			If objArgs.Exists("FileWhatFind") Then
				If objArgs.Exists("FileReplaceBy") Then
					If objFSO.FolderExists(objArgs.Item("FolderForScan")) Then
						If objFSO.FileExists(objArgs.Item("FileWhatFind")) Then
							If objFSO.FileExists(objArgs.Item("FileReplaceBy")) Then
								If objFSO.GetFile(objArgs.Item("FileWhatFind")).Size > 0 Then
									With objFSO.OpenTextFile(objArgs.Item("FileWhatFind"), ForReading)
										strWhatFind = .ReadAll()
										.Close
									End With
									
									If objFSO.GetFile(objArgs.Item("FileReplaceBy")).Size > 0 Then
										With objFSO.OpenTextFile(objArgs.Item("FileReplaceBy"), ForReading)
											strReplaceBy = .ReadAll()
											.Close
										End With
									Else
										strReplaceBy = ""
									End If
									
									WScript.Echo "Folder for scan: " & objArgs.Item("FolderForScan")
									WScript.Echo "File extension:  " & objArgs.Item("FileExtension")
									WScript.Echo "File what find:  " & objArgs.Item("FileWhatFind")
									WScript.Echo "File replace by: " & objArgs.Item("FileReplaceBy")
									WScript.Echo
									
									ScanSubFolders objFSO.GetFolder(objArgs.Item("FolderForScan"))
								Else
									WScript.Echo "File [" & objArgs.Item("FileWhatFind") & "] is zero length"
								End If
							Else
								WScript.Echo "File [" & objArgs.Item("FileWhatFind") & "] not found"
							End If
						Else
							WScript.Echo "File [" & objArgs.Item("FileWhatFind") & "] not found"
						End If
					Else
						WScript.Echo "Folder [" & objArgs.Item("FolderForScan") & "] not found"
					End If
				Else
					WScript.Echo "Not found argument <FileReplaceBy>"
					Call Usage
				End If
			Else
				WScript.Echo "Not found argument <FileWhatFind>"
				Call Usage
			End If
		Else
			WScript.Echo "Not found argument <FileExtension>"
			Call Usage
		End If
	Else
		WScript.Echo "Not found argument <FolderForScan>"
		Call Usage
	End If
	
	Set objFSO = Nothing
Else
	Call Usage
End If

Set objArgs = Nothing

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

'=============================================================================
Sub ScanSubFolders(objFolder)
	Dim objSubFolder
	Dim objFile
	
	WScript.Echo "[" & objFolder.Path & "]"
	
	For Each objFile In objFolder.Files
		If UCase(objFSO.GetExtensionName(objFile.Name)) = UCase(objArgs.Item("FileExtension")) Then
			WScript.Echo "  " & objFile.Name
			
			If objFile.Size > 0 Then
				With objFSO.OpenTextFile(objFile.Path, ForReading)
					strContent = .ReadAll()
					.Close
				End With
				
				If InStr(1, strContent, strWhatFind, vbTextCompare) > 0 Then
					WScript.Echo "    Fragment for replace found"
					
					With objFSO.OpenTextFile(objFile.Path, ForWriting)
						.Write Replace(strContent, strWhatFind, strReplaceBy)
						.Close
					End With
				End If
			End If
		End If
	Next
	
	WScript.Echo
	
	For Each objSubFolder In objFolder.SubFolders
		ScanSubFolders objSubFolder
	Next
End Sub
'=============================================================================

'=============================================================================
Sub Usage()
	WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " " & _
		"/FolderForScan:<folder> " & _
		"/FileExtension:<extension> " & _
		"/FileWhatFind:<file> " & _
		"/FileReplaceBy:<file>"
End Sub
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:54, 23-10-2012 | #10