Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Поиск файла и переименование

Ответить
Настройки темы
VBS/WSH/JS - [решено] Поиск файла и переименование

Новый участник


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

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


Имеется папка Folder с подпапками. Необходимо произвести поиск файлов (в каждой папке он будет один), в наименовании которых встречается "file" (например: Dfile1_56.txt, 73_file.txt, file.txt) и произвести переименование файлов на 123_temp_file.txt.

Прошу помочь.
Заранее спасибо.

Отправлено: 00:42, 21-06-2012

 

Ветеран


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

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


Примерно так:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFSO
Dim objFolder
Dim objFile

Dim objRegExp


If WScript.Arguments.Count = 1 Then
	strSourceFolder = WScript.Arguments.Item(0)
	
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	If objFSO.FolderExists(strSourceFolder) Then
		With WScript.CreateObject("VBScript.RegExp")
			.Pattern = ".*file.*\.txt"
			.IgnoreCase = True
			
			For Each objFolder In objFSO.GetFolder(strSourceFolder).SubFolders
				For Each objFile In objFolder.Files
					If .Test(objFile.Name) Then
						If objFile.Name <> "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
			Next
		End With
	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

Отправлено: 02:27, 21-06-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


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

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


Из письма в PM:
Цитата Traveller124:
К сожалению, взял Ваш Код, вставив в Notepad++, сохранил с расширением *.vbs (new2.vbs), положил сохранный файл в папку Folder, в которой уже находился файл Dfile1_56.txt и папка F001, в которой был файл file.txt. Запустил new2.vbs, но файлы как были со старыми именами, так и остались .

Что не так?

+ не могу понять, где в коде указать путь до папки Folder
1. Желательно указывать ссылкой, какой именно код имеется в виду. Хорошо, что у Вас пяток сообщений, и можно быстро найти наши с Вами общие связи.

2. Сообщение:
Цитата:
---------------------------
Windows Script Host
---------------------------
Usage: cscript.exe //nologo "new2.vbs" "<Source folder>"
---------------------------
ОК
---------------------------
выводящееся при таком запуске, Вас ничем не заинтересовало? Путь к папке указывается аргументом при вызове скрипта.

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

Отправлено: 02:11, 22-06-2012 | #3


Новый участник


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

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


Iska, спсб за оперативный ответ.
Цитата Iska:
1. Желательно указывать ссылкой, какой именно код имеется в виду. »
Ваше замечание обязательно учту и в дальнейшем буду указывать.

Цитата Iska:
2. Сообщение:
...
выводящееся при таком запуске, »
К сожалению, по данному коду у меня ничего не происходит в том числе нет ни какого сообщения.

Цитата Iska:
Путь к папке указывается аргументом при вызове скрипта. »
Вот так например objFolder = "D:\001\Folder" - понимаю, а вот что означает "указывается аргументом" - не понимаю.
В написании кодов очень слаб - это больше увлечение по необходимости, а не образ жизни (профессия/работа с ИТ технологиями не связана) .

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

Отправлено: 02:52, 22-06-2012 | #4


Ветеран


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

Профиль | Отправить 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


Новый участник


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

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


Iska,
огромное Вам спасибо, за терпеливое пояснение и оперативное реагирование
поставленная цель достигнута , код работает.

Отправлено: 15:47, 22-06-2012 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Поиск файла и переименование

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Переименование файла mishkinstvo Microsoft Windows 2000/XP 5 10-12-2021 22:08
[решено] поиск и переименование файлов exo Хочу все знать 5 26-08-2011 17:05
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файла на разных дисках Gawr33 Скриптовые языки администрирования Windows 11 23-04-2011 23:09
CMD/BAT - [решено] Переименование файла по данным из самого файла dark-------13 Скриптовые языки администрирования Windows 11 21-04-2011 18:08
Переименование Файла из его свойств win2005 Хочу все знать 4 09-01-2009 14:21




 
Переход