23.04.2010, 13:23 | #1 |
Участник
|
Вопрос экспорта/импорта объектов как текст.
Помещаем все текстовики в папку, перетаскиваем папку на скрипт Код: '========================================== Начало файла 'Имя: glue.vbs 'Язык: VBScript 'Описание: Собирает все текстовые файлы в один 'Использование: Перетащить папку на скрипт '========================================================== set WshShell=WScript.CreateObject("WScript.Shell") Dim lngI, objArgs Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objArgs= WScript.Arguments 'Создаём объект WshArguments For lngI=0 To objArgs.Count-1 'Перебираю все папки, которые перетащили на скрипт FileName = objArgs(lngI)&".txt" 'Имя результируещего файла Set FOut = objFSO.OpenTextFile (FileName,2,true) Set objFolder = objFSO.GetFolder(objArgs(lngI)) ShowSubFolders(objFolder) 'Запускаю перебор подкаталогов FOut.Close Next Sub ShowSubFolders(objFolder) 'Сначала просматриваю папки. Set colFolders = objFolder.SubFolders For Each objSubFolder In colFolders 'WScript.Echo objSubFolder.Path ShowSubFolders(objSubFolder) Next ' Потом просматриваю файлы. Set colFiles = objFolder.Files For Each objFile In colFiles if Ucase(Right(objFile.Path,4))=".TXT" then 'Set objFSO1 = WScript.CreateObject("Scripting.FileSystemObject") Set FSrc = objFSO.OpenTextFile(objFile.Path) 'FOut.WriteLine objFile.Path FOut.WriteLine(FSrc.ReadAll) FSrc.Close end if Next End Sub '========================================== Окончание файла Выгружаем из нава кучу объектов, а на выходе получаем каждый объект в виде текстового файла Код: '========================================== Начало файла 'Имя: SeparateObject.vbs 'Язык: VBScript 'Описание: Разбивает объекты на отдельные файлы 'Использование: Cделать ярлык в автозагрузке, указать в качестве параметров ' пути к файлам, которые нужно разбивать '========================================================== On Error Resume Next set WshShell=WScript.CreateObject("WScript.Shell") Dim lngI, objArgs, Files Files = "(" Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objArgs= WScript.Arguments 'Создаём объект WshArguments For lngI=0 To objArgs.Count-1 'Перебираю все файлы, которые перетащили на скрипт IF lngI > 0 THEN Files = Files & " OR " Files = Files & "(TargetInstance.Name = '" & (objArgs(lngI)) & "')" Next Files = Files & ")" Files = Replace(Files,"\","\\") Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") Set objEvents = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceOperationEvent WITHIN 3 WHERE " & _ "TargetInstance ISA 'CIM_DataFile'" & _ " AND " & Files ) 'WScript.Echo Files Do While(True) Set objReceivedEvent = objEvents.NextEvent SeparateFile(objReceivedEvent.TargetInstance.Name) Loop msgBox("End ") Sub SeparateFile(FileName) Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") IF objFSO.FileExists(FileName) THEN Do Err.Clear WScript.Sleep 500 Set TxtStream = objFSO.OpenTextFile(FileName) Loop Until(err.number = 0) Do While Not (TxtStream.atEndOfStream) Text = TxtStream.ReadLine IF LEFT(TEXT,6) = "OBJECT" then OutFileName = Left(FileName, InStrRev(FileName,"\")) & ObjFileName(TEXT) IF objFSO.FileExists(OutFileName) THEN Set FOut = objFSO.OpenTextFile (OutFileName,2,true) FileOpen = TRUE ELSE IF MsgBox("Create " & OutFileName & "?" , 4, OutFileName) = 6 THEN Set FOut = objFSO.OpenTextFile (OutFileName,2,true) FileOpen = TRUE END IF END IF END IF IF FileOpen THEN FOut.WriteLine(Text) IF LEFT(TEXT,1) = "}" then IF FileOpen THEN FOut.WriteLine("") FOut.Close END IF FileOpen = FALSE END IF Loop TxtStream.Close objFSO.DeleteFile(FileName) END IF END Sub Function ObjFileName(ObjString) Prefix = LCase(MID(ObjString,8,1)) Number = MID(ObjString,InStr(8,ObjString," ")+1,LEN(ObjString)) objName = MID(Number,InStr(1,Number," ")+1, LEN(ObjString)) Number = LEFT(Number,InStr(1,Number," ")-1) ObjFileName = Prefix & Number & " - " & objName & ".txt" END Function '========================================== Окончание файла |
|