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

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

Ветеран


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

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


Цитата Traveller124:
Вот так например objFolder = "D:\001\Folder" - понимаю, а вот что означает "указывается аргументом" - не понимаю. »
Например, Вы сохранили скрипт в «c:\Temp\new2.vbs». Запускаете командную строку. В ней пишете:
Код: Выделить весь код
cscript.exe //nologo "c:\Temp\new2.vbs" "D:\001\Folder"
«D:\001\Folder» — это и будет аргумент скрипта.

Цитата Traveller124:
Наверное я чуток не так написал, не исключаю, но когда я указал, что "Имеется папка Folder с подпапками." и далее упоминал про "(в каждой папке он будет один)" я как раз и имел в виду папку Folder с подпапками. »
В этом случае обычно пишут — рекурсивно, что означает — по всем уровням вложенности. Данный скрипт на это не был рассчитан. Надо будет его менять.

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

Dim strSourceFolder

Dim objFSO
Dim objRegExp


If WScript.Arguments.Count = 1 Then
	strSourceFolder = WScript.Arguments.Item(0)
	
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	If objFSO.FolderExists(strSourceFolder) Then
		Set objRegExp = WScript.CreateObject("VBScript.RegExp")
		
		With objRegExp
			.Pattern = ".*file.*\.txt"
			.IgnoreCase = True
		End With
		
		ScanSubFolders objFSO.GetFolder(strSourceFolder)
		
		Set objRegExp = Nothing
	Else
		WScript.Echo "Source folder [" & strSourceFolder & "] not found"
	End If
	
	Set objFSO = Nothing
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ ""<Source folder>"""
End If

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

'=============================================================================
Sub ScanSubFolders(objFolder)
	Dim objFile
	Dim objSubFolder
	
	'WScript.Echo objFolder.Path
	
	For Each objFile In objFolder.Files
		If objRegExp.Test(objFile.Name) Then
			If UCase(objFile.Name) <> UCase("123_temp_file.txt") Then
				WScript.Echo "Found file    [" & objFile.Path & "]"
				
				objFile.Name = "123_temp_file.txt"
				
				WScript.Echo "  Rename into [" & objFile.Path & "]"
			End If
		End If
	Next
	
	On Error Resume Next
	
	For Each objSubFolder In objFolder.SubFolders
		If Err.Number = 0 Then
			On Error Goto 0
			
			ScanSubFolders objSubFolder
		Else
			Err.Clear
			On Error Goto 0
			WScript.Echo "Can't enumerate subfolders for folder [" & objFolder.Path & "]."
		End If
	Next
End Sub
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:10, 22-06-2012 | #5