|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Поиск и замена файлов. |
|
VBS/WSH/JS - Поиск и замена файлов.
|
Новый участник Сообщения: 1 |
Вообщем у меня такая проблема!
Нужно зделать так чтобы искало по всем разделам и найденые файлы заменяло файлом из пути указаной в скрипте. Есть два скрипта у меня и никак не получаеться их связать. Первый скрипт ищет файлы и удаляет их Второй скрипт ищет файл и заменяет только первый найденый А мне нужно заменять все найденые файлы на всех разделах. Option Explicit 'Dim objArgs Dim strFileName 'If Not WScript.Arguments.Named.Exists("FileName") Then ' WScript.Echo "Using: " & WScript.ScriptName & " /FileName:<file for find>" ' WScript.Quit 1 'End If 'strFileName = WScript.Arguments.Named.Item("FileName") strFileName = "help.txt" ' — имя файла для поиска писать здесь Dim objFSO Dim objDrive ReDim arrPaths(0) Dim i Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") arrPaths(LBound(arrPaths)) = False For Each objDrive In objFSO.Drives If objDrive.DriveType = 2 Then If objDrive.IsReady Then FindInSubFolders objDrive.RootFolder, strFileName End If End If Next If arrPaths(LBound(arrPaths)) Then 'WScript.Echo "" & strFileName & "" For i = LBound(arrPaths) + 1 To UBound(arrPaths) 'WScript.Echo arrPaths(i) objFSO.DeleteFile arrPaths(i) Next Else WScript.Echo "Not found paths for file [" & strFileName & "]." End If Set objFSO = Nothing WScript.Quit 0 Sub FindInSubFolders(objFolderForFind, strFileName) Dim objFolder 'WScript.Echo objFolderForFind.Path If objFSO.FileExists(objFSO.BuildPath(objFolderForFind, strFileName)) Then ReDim Preserve arrPaths(Ubound(arrPaths) + 1) arrPaths(LBound(arrPaths)) = True arrPaths(UBound(arrPaths)) = objFSO.BuildPath(objFolderForFind, strFileName) 'WScript.Echo "Found file [" & strFileName & "] on folder [" & objFolderForFind.Path & "]" End If On Error Resume Next For Each objFolder In objFolderForFind.SubFolders If Err.Number = 0 Then FindInSubFolders objFolder, strFileName Else Err.Clear 'WScript.Echo "Can't enumerate subfolders for folder [" & objFolderForFind.Path & "]" End If Next On Error Goto 0 End Sub Option Explicit Dim objFSO Dim objDrive Dim strFileNameForFind Dim boolDone strFileNameForFind = "help.txt" ' Имя файла для поиска. Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objDrive = objFSO.GetDrive("h:") ' Буква Раздела WScript.Echo "Find on drive " & objDrive.DriveLetter & ":..." boolDone = False ScanSubFolders objDrive.RootFolder, strFileNameForFind ' Вызываем процедуру поиска ' для корневой папки этого тома. ' Обработка вложенных папок будет ' вестись рекурсивно. Set objDrive = Nothing Set objFSO = Nothing WScript.Quit 0 '============================================================================= '============================================================================= Sub ScanSubFolders(objFolder, strFileName) Dim objSubFolder Dim strFullFileName ' Выводим путь обрабатываемой папки (для ' отладки; имеет смысл закомментировать). strFullFileName = objFSO.BuildPath(objFolder.Path, strFileName) ' Строим полный путь к файлу. If objFSO.FileExists(strFullFileName) Then ' Файл существует? WScript.Echo vbTab & "Found as [" & strFullFileName & "], copying..." ' Копируем файл objFSO.CopyFile objFSO.BuildPath("d:\", strFileName), strFullFileName, True boolDone = True Exit Sub End If On Error Resume Next ' Обрабатываем ошибки, возможные в случае, ' когда нет доступа к содержимому папки ' (пример - «System Volume Information». For Each objSubFolder In objFolder.SubFolders If Err.Number = 0 Then ' Удалось получить доступ к содержимому папки? On Error Goto 0 ' Восстанавливаем стандартную обработку ошибок If Not boolDone Then ScanSubFolders objSubFolder, strFileName ' Вызываем процедуру поиска для каждой из подпапок. End If Else ' Если не удалось — Err.Clear ' сбрасываем состояние ошибки, On Error Goto 0 ' восстанавливаем стандартную обработку ошибок и движемся дальше. WScript.Echo "Can't enumerate subfolders for folder [" & objFolder.Path & "]." End If Next End Sub |
|
Отправлено: 02:54, 26-06-2011 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Drotik:
WScript.Echo FindReplaceFileByName ("file.txt","C:\TEST\test.txt") Function FindReplaceFileByName (strFileName, strFilePath) Dim FSO, WMI, col, obj, str Set FSO = CreateObject("Scripting.FileSystemObject") Set WMI = GetObject("winmgmts:\\.\root\cimv2") For Each obj In FSO.Drives If obj.DriveType=2 And obj.IsReady Then str = str &"Drive='"& obj.DriveLetter &":' OR " End If Next For Each obj In WMI.ExecQuery("SELECT Name From CIM_DataFile Where ("& Mid(str,1,Len(str)-4) &") AND Name LIKE '%\\"& strFileName &"'") ' WScript.Echo obj.Name FSO.CopyFile strFilePath, obj.Name, vbTrue FindReplaceFileByName = FindReplaceFileByName + 1 Next End Function |
|
Отправлено: 08:21, 27-06-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Цитата amel27:
например есть куча файлов с расширением *.jpg на наске С: и файл с тем же расширением на флэшке. Нужно что бы при запуске, скрипт копировал файл с флэшки и заменял найденые по маске + сохранял имя файла. Возможно ли такое? |
|
Отправлено: 18:07, 24-04-2014 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Поиск и замена текста | ajakzs | Скриптовые языки администрирования Windows | 18 | 08-08-2013 16:10 | |
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файла на разных дисках | Gawr33 | Скриптовые языки администрирования Windows | 11 | 23-04-2011 23:09 | |
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файлов на разных дисках | 4zz | Скриптовые языки администрирования Windows | 2 | 21-02-2011 16:07 | |
C/C++ - [решено] Поиск и замена текста | Simpler | Программирование и базы данных | 15 | 01-12-2010 16:03 | |
Разное - поиск и замена | ansslecter | Программное обеспечение Windows | 1 | 06-07-2010 16:03 |
|