Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Закладки » Программирование "удобняшек" на VBScript

Модерирует : ShIvADeSt

ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

   

bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну не помню - погугли все в инете есть с примерами. я так и нашел, не сам же придумал.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:47 19-11-2010
Demon L



Lite FSB
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа – гуру помогите решить задачку:
Есть папка (C:\test) в нее падают текстовые файлики парами (123456789.tkt и 123456789.txs) и файл «C:\base.txt» в нем в столбик перечислено, что нужно искать (одно значение на одну строку).
Примерно так:
Hdbjdmk
Hgj49cdkrp0
Hsdey568dmk
123445566
итд
Требуется проверить содержимое одного файла (скажем 123456789.tkt) выяснить есть ли там что либо из «base.txt». И если есть – скопировать этот файл и его пару в папку C:\OUT а также все обработанные файлы переместить в C:\OUT_ALL
Таким образом в C:\OUT_ALL должны быть все файлы а в C:\OUT только те в которых есть значения из C:\base.txt
 
Заранее спасибо за помощь !!

Всего записей: 375 | Зарегистр. 24-07-2003 | Отправлено: 19:15 20-11-2010 | Исправлено: Demon L, 19:28 20-11-2010
serg3001



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые программисты, подскажите, возможно ли средствами VBS решить следующую задачу.
 
Есть три DBF файла:
 
accounts.dbf
rectranc.dbf
rectranh.dbf
 
нужно связать между собой данные из этих трех файлов, извлечь их в отдельную таблицу, после этого данные перенести в txt файл, который будет иметь спец. вид.
 
Приведу подробный пример с описанием задачи:
 
из файла accounts.dbf извлекаются следующие данные:
 
TNUM           INOUT        ENDSUM
Б00043        АВБ             1000.000
Б00313        АВВ             1000.000
Б00354        Б2                3335.220
 
 
из файла rectranc.dbf:
 
CODE        TNUM        NAME                                   NFACC
127        Б00043        Иванов Иван Иванович         42307810312487525410
046        Б00313        Петров Петр Петрович           42358796510477456321
111        Б00354        Сидоров Сидор Сидорович   42325895448752223655
 
 
из файла rectranh.dbf:
 
CODE     HEAD2
127        0163
046        0105
111        0049
 
 
нужно связать данные из этих файлов и составить три txt файла с именами АВБ, АВВ и Б2 соответственно, в виде:
АВБ.txt
0163:42307810312487525410:1000.00:Иванов:Иван:Иванович:
 
АВВ.txt
0105:42358796510477456321:1000.00:Петров:Петр:Петрович:
 
Б2.txt
0049:42325895448752223655:3335.22:Сидоров:Сидор:Сидорович:
 
P.S.В этой теме мне помогли решить данную задачу при помощи BAT, но данных очень много в файле, возникают тормоза при обработке.Посоветовали напрямую работать с dbf файлами через реляционные операции SQL, но я в программировании не силён.

Всего записей: 3817 | Зарегистр. 16-10-2010 | Отправлено: 20:41 20-11-2010
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Demon L

Код:
Option Explicit
 
Dim CheckFile
Dim SourceDir
Dim OutDir
Dim OutAllDir
Dim FSO
Dim SHA
Dim BaseFile
Dim TextArray
Dim CountArray
Dim FilesArray
Dim i
Dim PathFile
Dim TxtFile
Dim Text
Dim MaskName
Dim n
Dim TextItem
 
CheckFile = "C:\base.txt"
SourceDir = "C:\test"
OutDir = "C:\OUT"
OutAllDir ="C:\OUT_ALL"
 
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SHA = CreateObject("Shell.Application")
 
Set BaseFile = FSO.OpenTextFile(CheckFile)
  TextArray = Split(BaseFile.ReadAll, vbNewLine)
BaseFile.Close
 
CountArray = UBound(TextArray)
   
Set FilesArray = SHA.Namespace(SourceDir).Items    
FilesArray.Filter 192, "*.tkt"  
   
For i = 0 To FilesArray.Count - 1
  PathFile = FilesArray.Item(i).Path
  Set TxtFile = FSO.OpenTextFile(PathFile)
    Text = TxtFile.ReadAll
  TxtFile.Close
  MaskName = SourceDir & "\" & FSO.GetBaseName(PathFile) & ".*"
  For n = 0 To CountArray
    TextItem = TextArray(n)
    If InStr(Text, TextItem) And TextItem <> "" Then
      FSO.CopyFile MaskName, OutDir
      Exit For
    End If
  Next
  FSO.CopyFile MaskName, OutAllDir
Next

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 06:56 21-11-2010 | Исправлено: Rush, 07:02 21-11-2010
Demon L



Lite FSB
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush
 
Огромное спасибо !! то что доктор прописал !!
и не большая проблема:
Когда скрипт раскидывает файлы по папкам все ок но если там уже есть такой файл - вылазит ошибка "файл уже существует"... как сделать так чтоб он без вопросов перезаписывал фал новым ?
 
Еще раз спасибо !! Вы меня спасли !

Всего записей: 375 | Зарегистр. 24-07-2003 | Отправлено: 14:36 21-11-2010 | Исправлено: Demon L, 16:01 21-11-2010
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Demon L

Цитата:
Когда скрипт раскидывает файлы по папкам все ок но если там уже есть такой файл - вылазит ошибка

Перезапись осуществляется если местом назначения выбирается файл, а не папка. Поэтому так: Подробнее...

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 13:42 22-11-2010
Demon L



Lite FSB
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush
не совсем понял что это значит...

Цитата:
Перезапись осуществляется если местом назначения выбирается файл, а не папка

Обьясни плиз...

Всего записей: 375 | Зарегистр. 24-07-2003 | Отправлено: 14:25 22-11-2010
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Demon L
Ну в первом скрипте просто была указана папка, куда копировать файлы. При таком раскладе перезапись файла, если он есть в конечной папке, не делалась.
Во втором скрипте кроме папки назначения указывается еще и имя файла. Перезапись происходит.
Да не бери в голову, это так - мысли вслух. Скрипт ведь переделанный перезаписывает файлы? Остальное лирика.

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 15:54 22-11-2010
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
serg3001
Пути к папке с dbf и к папке вывода задаются константами вручную, на тестовом примере работает
Подробнее...

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 10:15 23-11-2010 | Исправлено: AndVGri, 10:18 23-11-2010
serg3001



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
Спасибо за код, но призапуске файла vbs выдается сообщение
 

Всего записей: 3817 | Зарегистр. 16-10-2010 | Отправлено: 10:52 23-11-2010
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
serg3001
попробуй заменть (может с ODBC проблемы?) у меня работают оба варианта под WinXP32

Цитата:
'pConn.Open sDNS1 & sdbPath & sDEF2 & sdbPath & sPARAM3

на

Код:
 
Dim strConn
 
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sdbPath
strConn = strConn & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
pConn.Open strConn
 

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 10:59 23-11-2010
serg3001



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
заменил, выполнилось всё, но вот ещё загвозка, кодировка у dbf файлов DOS, необходимо перевести в windows 1251.
Подскажите, а если использовать txt формат файлов, то что необходимо поменять в коде?
 

Всего записей: 3817 | Зарегистр. 16-10-2010 | Отправлено: 11:25 23-11-2010 | Исправлено: serg3001, 13:00 23-11-2010
adminchik2010

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!  
 
Помогите написать скрипт который:  
1)Запускает приложение.  
2)Поочередно открывает каждый элемент его проводника в отдельном окне(стать левой клавишей мыши на элемент проводника, после нажать правую клавишу и выбрать "Open in new window")  
Вот начало:  
 
Dim WS  
Set WS = WScript.CreateObject("WScript.Shell")  
WS.run chr(34)+"C:\Program Files\System Center Operations Manager 2007\Microsoft.MOM.UI.Console.exe"+chr(34)  
WshShell.SendKeys("My Workspace")  
 
Заранее спасибо!  

Всего записей: 6 | Зарегистр. 17-11-2010 | Отправлено: 11:38 23-11-2010
Demon L



Lite FSB
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush
да! Все ок. Спасибо.

Всего записей: 375 | Зарегистр. 24-07-2003 | Отправлено: 11:55 23-11-2010
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
serg3001
Так у меня dbf (созданы через Access) в DOS кодировке. Скорее всего у тебя dbf в Win1251, если так, то попробуем с другим provider для visual foxpro (его, правда, нужно будет скачать) - он как раз работает с Win1251.
А с текстовыми - попробовал, что то не может выполнить запрос, а времени, да и желания, особо нет. Так что похоже, увы.
Выложи кусочек своих dbf для теста, посмотрю, что можно будет сделать с ними

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 04:35 24-11-2010 | Исправлено: AndVGri, 06:34 24-11-2010
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
serg3001
Предположение, по твоим dbf файлам, подтвердилось - кодировка Win1251 (она и в поле кодировки прописана, как показывает xBaseView).
Скачай visual forxpro ole db и установи
А код будет такой

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 09:58 25-11-2010
gap5



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как в VBS получить доступ к IDLE таймеру в винде (ХР), по которому, в т.ч. запускается хранитель экрана?
 
Т.е. нужно отследить начало простоя и окончание...
 
Хотя Windows Media Player может обнулять IDLE таймер... тогда, наверное лучше контролировать напрямую INPUT (клава+мышь)

Всего записей: 1033 | Зарегистр. 30-05-2006 | Отправлено: 09:37 26-11-2010
frct

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!  
подскажите пожалуйста, есть ли скрипт который меняет вход в домен по умолчанию?
а то после миграции компьютер со старого домена на новый люди по привычке заходят в старый...
компы с windows xp

Всего записей: 3 | Зарегистр. 06-07-2010 | Отправлено: 04:13 29-11-2010
sLap



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Добрый день!  
подскажите пожалуйста, есть ли скрипт который меняет вход в домен по умолчанию?
а то после миграции компьютер со старого домена на новый люди по привычке заходят в старый...
компы с windows xp

Тут даже скрипт не нужен:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"DefaultDomainName"="Domain"
 
на каждом ПК. Как внедрять reg-файл скриптом думаю объяснять не надо.

Всего записей: 214 | Зарегистр. 31-05-2002 | Отправлено: 05:34 29-11-2010
frct

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Тут даже скрипт не нужен:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"DefaultDomainName"="Domain"
 
на каждом ПК. Как внедрять reg-файл скриптом думаю объяснять не надо.

 
Спасибо большое! решил внедрить через psexec -s \\* c:\windows\regedit.exe /s \\share\files\reg.reg >>log.log

Всего записей: 3 | Зарегистр. 06-07-2010 | Отправлено: 04:40 30-11-2010
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Закладки » Программирование "удобняшек" на VBScript
ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru