Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование "удобняшек" на VBScript

Автор: YURETS777
Дата сообщения: 18.06.2010 13:40
vlth

У меня разделитель - знак табуляции
В реестре прописал:

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text]
"Win32"="C:\\Windows\\system32\\mstext40.dll"
"UseZeroMaxScanAs"="One"
"ImportMixedTypes"="Majority Type"
"DisabledExtensions"="!txt,csv,tab,asc,tmp,htm,html"
"CharacterSet"="ANSI"
"ImportFixedFormat"="RaggedEdge"
"Format"="TabDelimited"
"Extensions"="txt,csv,tab,asc"
"FirstRowHasNames"=hex:01
"MaxScanRows"=dword:00000019
"ExportCurrencySymbols"=hex:01


так как его победить ?

Автор: vlth
Дата сообщения: 18.06.2010 22:53
YURETS777
По-моему - никак. Т.е. исключтельно с пом. ADO - никак:
можно открывать файл в Excel и обрабатывать его там (или, сохранив как .xls, подключаться к нему опять-таки через ADO) или заменить его на файл с другим разделителем с пом. FSO. Ну а дальше – опять ADO )))
Автор: gryu
Дата сообщения: 20.06.2010 09:45
Олл, нужен кусок кода позволяющий указать конкретный файл для последующей передачи всего пути, включая файл, в переменную.
Так же нужен код позволяющий указать конкретную папку для того же.

Необходимое условие.
Код должен работать на любой Windows, включая 7-ку, по дефолту. Т.е. без дополнительного софта или доустановки библиотек.
Автор: ComradG
Дата сообщения: 24.06.2010 12:24
boy999
Я так понимаю тебе нужно, чтобы MBR с флешки запускалась автоматом без всяких окон. ОК. Тогда делай вот чего: подправь чуток свою vbs

Код: Set WshShell = CreateObject("WScript.Object")
WshShell.Run "MBR <твои_параметры>", 0, false
Автор: boy999
Дата сообщения: 24.06.2010 13:55
ComradG

Вот чего у меня: Set WshShell = CreateObject("WScript.Object")
WshShell.Run "\mpr\\MPR.exe /export", 0, false

[autorun]
UseAutoPlay=1
Open=mbr.vbs

mbr.vbs на корню.


НЕ создаётся.

Чего не так у меня!?
Автор: ComradG
Дата сообщения: 24.06.2010 14:01
boy999
Если у тебя в корне лежит mbr.vbs, autorun.inf и собственно mbr.exe, то vbs должна выглядеть так:

Код: Set WshShell = CreateObject("WScript.Object")
WshShell.Run "mbr.exe /export", 0, false
Автор: boy999
Дата сообщения: 24.06.2010 14:12
НЕА
Автор: ComradG
Дата сообщения: 24.06.2010 14:15
boy999
Весьма лаконично, а поподробней.
Скриншот бы приаттачил - так бы было понятней как у тебя файлы раскиданы.
Автор: boy999
Дата сообщения: 24.06.2010 14:22


Запускал вручную и вот.

Добавлено:


Добавлено:
ещё......как мне сказали, у MBR есть защита от скрытого окна.
Разрабы, сцуко, постарались, а зачем!?
Автор: us0r
Дата сообщения: 24.06.2010 14:31
Что бы не попадало к АнтиВирям...
Автор: ComradG
Дата сообщения: 24.06.2010 14:35
boy999
Второй скриншот все объясняет. Просто я думал, что у тебя mpr.exe находится в той же папке, что и сама vbs, а оно вон чего.
Тогда строчку с установкой текущей папки стоит все же оставить:

Код: Set WshShell = CreateObject("WScript.Object")
CurDir = WshShell.CurrentDirectory
WshShell.Run CurDir & "\mpr\MPR.exe /export", 0, false
Автор: boy999
Дата сообщения: 24.06.2010 14:53
НЕА.

Пардон, я щас по делам поскакал......
Автор: boy999
Дата сообщения: 24.06.2010 17:31
Ммм?
Автор: boy999
Дата сообщения: 25.06.2010 08:20
Запускаю вручную и выдаёт:



Ммм!?
Автор: boy999
Дата сообщения: 26.06.2010 07:28
AY!?
Автор: mugil_cephalus
Дата сообщения: 26.06.2010 11:28
ComradG

Цитата:
Любой процесс можно запустить скрыто, но там и vbs по содержанию больше будет (отдельно взятый случай).

не vbs-вариант нужен?
http://www.commandline.co.uk/chp/
Автор: boy999
Дата сообщения: 26.06.2010 12:17
mugil_cephalus

Цитата:
не vbs-вариант нужен?  
http://www.commandline.co.uk/chp/


Ну если можно совместить, автозапуск и скрытие процесса - то нужно и ещё как!

Ток я по ссылке ничего не пойму.....
Автор: mugil_cephalus
Дата сообщения: 27.06.2010 11:06
boy999

Цитата:
Ну если можно совместить, автозапуск и скрытие процесса - то нужно и ещё как!

как совместить автозапуск и скрытие процесса этой прогой спроси здесь - http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=19668&start=0
если процесс - консольный , то лучше скрывать этой прогой - http://www.commandline.co.uk/cmdow/
или этой - http://www.ntwind.com/software/utilities/hstart.html
Автор: ComradG
Дата сообщения: 30.06.2010 11:52
Качнул давеча зазипованный файл. А 7za под рукой не оказалось (я в лечебке, мне подруга притащила ноут). После снотворного торможу, а потому вместо того, чтобы скачать оный (ан)зипер, я тут припомнил вбску.

Код: Function fUnzip(sZIPFile, sTargetFolder)

Dim oShellApp:Set oShellApp = CreateObject("Shell.Application")
Dim oFSO:Set oFSO = CreateObject("Scripting.FileSystemObject")

If Not oFSO.FolderExists(sTargetFolder) Then oFSO.CreateFolder sTargetFolder

oShellApp.NameSpace(sTargetFolder).CopyHere oShellApp.NameSpace(sZipFile).Items

Do
Wscript.Sleep 1000
Loop While oFSO.GetFolder(sTargetFolder).Files.Count < oShellApp.NameSpace(sZIPFile).Items.Count

End Function

'Пример применения
fUnzip "d:\archivers\test.zip", "d:\unpack\zero"
Автор: kolyas
Дата сообщения: 01.07.2010 02:43
1. как из vbs запустить bat'ник с правами админа. нужно для регистрации dll из vbs в win 7
2. как проверить программмно зарегистрирована ли библиотека в системе или нет или обработать данную ошибку?
Автор: ComradG
Дата сообщения: 01.07.2010 12:41
kolyas
Ты бы пояснил: делать это нужно локально или на удаленной машине. Если удаленно, то могу посоветовать использовать psexec Руссиновича вкупе с vbs следующего содержания:

Код: SET WshShell = WScript.CreateObject("WScript.Shell")
SET WshSysEnv = WshShell.Environment("SYSTEM")
SET FSO = CreateObject("Scripting.FileSystemObject")
IF WScript.Arguments.Count <> 0 Then
FOR EACH arg IN WScript.Arguments
iArgCount = iArgCount + 1
strCmdArg = (arg)
strCmdArray = Split(strCmdArg, " ", 2, 1)
IF iArgCount = 1 THEN
strExe = strCmdArray(0)
ELSEIF iArgCount = 2 THEN
strRun = strCmdArray(0)
ELSE
strParams = strParams&" "&strCmdArray(0)
END IF
NEXT
END IF
'/t:0A && title ***** Admin *****
strExt = LCase(Right(strExe, 3))

IF strExt <> "exe" AND strExt <> "bat" AND strExt <> "cmd" THEN
WshShell.Run "psexec.exe -d -i -e -u COMPUTERNAME\USER -p PASSWORD cmd /c start "&strExe&"
"&strRun&" "&strParams, 0, FALSE
ELSE
WshShell.Run "psexec.exe -d -i -e -u COMPUTERNAME\USER -p PASSWORD "&strExe&" "&strRun&"
"&strParams, 0, FALSE
END IF

SET WshShell = NOTHING
SET WshSysEnv = NOTHING
SET FSO = NOTHING
Автор: palpatin
Дата сообщения: 01.07.2010 15:30
два скрипта для проверки свежести баз симантека и прав текущего пользователя на запись в системные папки и отправки их (пропустил это). из за UAC не работает. как исправить? запуск с админ правами не подойдет, т.к. теряется смысл второго скрипта


Код: script_version=1.2

Set WshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WshNetwork = CreateObject("WScript.Network")
symantec_path="c:\Program Files\Common Files\Symantec Shared\VirusDefs\definfo.dat"

sComputer = LCase(WshNetwork.ComputerName) + "." + LCase(WshNetwork.UserDomain) + ".net"

sDomain = LCase(WshNetwork.UserDomain) + ".net"


If objFSO.FileExists(symantec_path) Then

Set objFile = objFSO.GetFile(symantec_path)
Set objDatFile = objFSO.OpenTextFile(objFile, 1)

Do Until objDatFile.AtEndOfStream
strLine = objDatFile.Readline
intCurDefs = InStr(strLine , "CurDefs")
If intCurDefs > 0 Then
strCurDefs = strLine
strDateDefs = Mid(strCurDefs, 9, 8)

dtYear = Left(strDateDefs, 4)
dtMonth = Mid(strDateDefs, 5, 2)
dtDay = Right(strDateDefs, 2)
DateVirDefs = dtMonth & "/" & dtDay & "/" & dtYear
dtDefDate = CDate(DatevirDefs)
strRevNumber = Right(strCurDefs, 3)

    If (date - dtDefDate) <= 7 Then
        trap_type = "OK"
        trap_desc = "<b>" & sComputer & ":</b> Virus Definition up to date <br><b> def date:</b> " & dtDefDate & " <br><b>ver:</b> " & strRevNumber
     Else
        trap_type = "WARNING"
        trap_desc = "<b>" & sComputer & ":</b> Virus Definition older then 7 day <br><b>def date:</b> " & dtDefDate & "<br><b> ver:</b> " & strRevNumber

    End If


End If

Loop

objDatFile.Close

Else
    trap_type = "CRITICAL"
    trap_desc = "<b>" & sComputer & ":</b> Virus Definition file not found!"

End If

...

end if
Автор: ComradG
Дата сообщения: 01.07.2010 19:06
palpatin
Таг [more] нам не знаком?!
Ладно, к делу. Я тут бегло ознакомился с твоими скриптами, и хотелось бы поинтересоваться:
1.Откуда такая уверенность, что дело в UAC'е?
2.Нафига бить скрипт на две части?
Следуя тому, что описано в первом скрипте, его логичнее запускать именно с правами админа, а следуя второму - можно то же прикрутить к первому. Если б ты предоставил бодее развернутый план действий, я бы еще может и сообразил что к чему, а так, на скидку, ничего не могу сказать.
Автор: palpatin
Дата сообщения: 02.07.2010 10:03
это самописный скрипт для отправки отчета по snmp на сервер с nagios, взаимодействует с trapgen.exe . почему два - делал его не я и немного чайник в вбс. дело в том что с хп он отрабатывает отлично, а на старших ОС (виста-7) присылает ответ, что базы не обновлены и пользователь имеет доступ на запись к системным папкам.

например приходять нажиос выдает ответы вида

хост: Virus Definition file not found!

хост: C:\ProgramData is writeableC:,C:\Windows,C:\Windows\system32 is read-only for user пользователь

хост: C:,C:\WINDOWS,C:\WINDOWS\system32,C:\Documents and Settings\All Users is writeable for user пользователь

хост: C:\Documents and Settings\All Users is writeableC:,C:\WINDOWS,C:\WINDOWS\system32 is read-only for user пользователь

хост: C:,C:\Windows,C:\Windows\system32,C:\ProgramData is writeable for user пользователь

з.ы. что-то я сам начал сомневатся в нерабочести скриптов. может в висте-7 как то отличается иерархия указаных папок?
Автор: Ex0dus
Дата сообщения: 04.07.2010 18:04
Есть многостраничный вордовский файл. Периодически в нем появляется строчка "TEST".
Как пронумеровать все эти строчки по порядку. Чтобы получилось:
TEST 1
....
TEST 2
....
TEST 3
и так далее.
Макросы, батники?
Автор: ComradG
Дата сообщения: 04.07.2010 18:36
Zipping/UnZipping. Пока только умеет работать с абсолютными путями.
[more=Код]Option Explicit
Dim arg
Dim optind

'Справка по параметрам
If WScript.Arguments.Count < 1 Then
WScript.Echo "Синтаксис: zip.vbs [-a|-e] zip-файл [файлы...]"
WScript.Echo " -a - добавить файлы в архив"
WScript.Echo " -e - распаковать архив"
WScript.Echo "Скрипт пока может обрабатывать только полные"
WScript.Echo "пути, так как находится в стадии разработки."
WScript.Quit
End If

'Обработчик аргументов
arg = WScript.Arguments(optind)

Select Case LCase(arg)
Case "-a"
optind = optind + 1
Call MakeZIP()
Case "-e"
optind = optind + 1
Call ExtractZIP()
End Select
WScript.Quit

'Обработчик создания zip-архива
Sub MakeZIP()

Dim fso, wShell, Shell, n, IE, ZIPFile, file, folder, folderItem, dFolder
Dim ZIPHeader:ZIPHeader = "PK" & Chr(5) & Chr(6) & String(18, Chr(0))

'Проверка наличия параметров после ключа архивирования
If WScript.Arguments.Count < optind + 2 Then
WScript.Echo "Неверные параметры командной строки."
WSript.Quit
End If

Set fso = CreateObject("Scripting.FileSystemObject")
Set wShell = CreateObject("WScript.Shell")
Set Shell = CreateObject("Shell.Application")

For n = 0 to 9
For Each IE in Shell.Windows
If Not IE.Busy Then
If IE.ReadyState = 4 Then
If InStr(TypeName(IE.Document), "IShellFolderViewDual") = 1 Then
Exit For
End If
End If
End If
Next
If Not IsEmpty(IE) Then Exit For
If n = 0 Then CreateObject("WScript.Shell").Run "explorer.exe", 0, true
WScript.Sleep 500
Next

If IsEmpty(IE) Then
WScript.Echo "Непредвиденная ошибка."
WScript.Quit
End If

Set Shell = IE.Document.Application

ZIPFile = fso.GetAbsolutePathName(WScript.Arguments(optind))
'Валидация расширения архива
If UCase(fso.GetExtensionName(ZIPfile)) <> "ZIP" Then
WScript.Echo "Неверное расширение файла.", fso.GetExtensionName(ZIPFile)
WScript.Quit
End If
'Проверяем существует ли архив
If Not fso.FileExists(ZIPfile) Then
fso.CreateTextFile(ZIPfile, false).Write ZIPHeader
End If

Set dFolder = Shell.NameSpace(ZIPfile)

'Добавляем файлы в архив
For optind = optind + 1 to WScript.Arguments.Count - 1
file = fso.GetAbsolutePathName(WScript.Arguments(optind))
Set folder = Shell.NameSpace(fso.GetParentFolderName(file))
Set folderItem = folder.ParseName(fso.GetFileName(file))
If folderItem Is Nothing Then
WScript.Echo WScript.Arguments(optind), "Неверный параметр."
WScript.Quit
End If
dFolder.CopyHere folderItem
Next
End Sub

'Обработчик распаковки zip-архива
Sub ExtractZIP()

Dim fso, Shell, ZIPFile, folder, folderItem, dFolder

'Проверка наличия параметров после ключа распаковки
If WScript.Arguments.Count < optind + 1 Then
WScript.Echo "Неверные параметры командной строки."
WScript.Quit
End If

Set fso = CreateObject("Scripting.FileSystemObject")
Set Shell = CreateObject("Shell.Application")

ZIPfile = fso.GetAbsolutePathName(WScript.Arguments(optind))
'Валидация расширения архива
If UCase(fso.GetExtensionName(ZIPfile)) <> "ZIP" Then
WScript.Echo "Неверное расширение файла.", fso.GetExtensionName(ZIPfile)
WScript.Quit
End If

Set folder = Shell.NameSpace(ZIPfile)
Set dFolder = Shell.NameSpace(fso.GetAbsolutePathName(""))

'Извлекаем файлы из архива
If WScript.Arguments.Count < optind + 2 Then
dFolder.CopyHere folder.Items
Else
For optind = optind + 1 to WScript.Arguments.Count - 1
Set folderItem = folder.ParseName(Wscript.Arguments(optind))
If folderItem Is Nothing Then
WScript.Echo WScript.Arguments(optind), "Лишний параметр."
WScript.Quit
End If
dFolder.CopyHere folderItem
Next
End If
End Sub[/more]
Автор: YURETS777
Дата сообщения: 07.07.2010 17:46
Можно ли VBS-скриптом сделать безопасное извлечение определенного USB-устройства ?
Автор: ComradG
Дата сообщения: 07.07.2010 20:37
YURETS777
В случае с XP - нет, а вот NT 6 и выше - да. Реализуется, если не ошибаюсь, как-то через сервис imapi. У мелкомягких есть имапикрю, которая в своих блогах писала на эту тему.
Автор: YURETS777
Дата сообщения: 13.07.2010 20:55
ComradG
Еще нужно скриптом менять разрешение экрана.
Это реально ?
Автор: Denn29
Дата сообщения: 22.07.2010 14:06
Упс.. Уже не надо.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

Предыдущая тема: Работа в Delphi c CryptoApi


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.