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

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

Автор: vlth
Дата сообщения: 25.02.2010 22:36
cambit

Цитата:
скрипт будет записан на CD а он на разных компьютерах будет под разной буквой, так что опять неудача
Что, wsh.ScriptFullName не выручает?
Автор: Hugo121
Дата сообщения: 26.02.2010 08:30
cambit , это не пробовал - на 70 странице в самом низу:
http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=1380#20 ?
Я таким скриптом проверял:

Код: WScript.Echo wscript.path
MyPath = left (WScript.ScriptFullName, (Len(WScript.ScriptFullName))-(Len(WScript.ScriptName)))
msgbox MyPath
Автор: vlth
Дата сообщения: 26.02.2010 16:41
Hugo121Или так: MyPath = left (wsh.ScriptFullName, InStrRev(wsh.ScriptFullName,"\"))
Автор: cambit
Дата сообщения: 27.02.2010 11:15
Hugo121
vlth
Я смысл в принципе понял, но как реализовать - не въеду.
Вот мой скрипт - помогите пожалуйста!
//Программа автоматической установки обновлений WINDOWS98SE
var vbOKCancel = 1;
var vbInformation = 64;
var vbCancel = 2;
var Message = "Запустить программу установки обновлений Windows 98SE?";
var Title = "Подтвердите действие";
var WSHShell = WScript.CreateObject("WScript.Shell");
Welcome();

WSHShell.Run("Update.bat",5,"True");

function Welcome() {
var intDoIt;

intDoIt = WSHShell.Popup(Message,
0,
Title,
vbOKCancel + vbInformation);
if (intDoIt == vbCancel) {
WScript.Quit();
}
}
//Запрос на перезагрузку
var vbOK = 1;
var Inf = 64;
var Cancel = 2;
var Messag = "Установка завершена. Компьютер следует перезагрузить. Выполнить?";
var Titl = "Подтвердите действие";
var WSHShell = WScript.CreateObject("WScript.Shell");
Welcom();

WSHShell.Run("rundll32.exe shell32.dll,SHExitWindowsEx 2",5,"False");

function Welcom() {
var intDo;

intDo = WSHShell.Popup(Messag,
0,
Titl,
vbOK + Inf);
if (intDo == Cancel) {
WScript.Quit();
}
}
Заранее спасибо!!!
Автор: vlth
Дата сообщения: 28.02.2010 11:37
cambit, а что вдруг на js ? - у меня в его синтаксис въезжать желания никогда не возникало. И необходимости не было )))
Автор: cambit
Дата сообщения: 28.02.2010 16:16
vlth
Образец такой попался. Вечером сброшу на vbs - на работе остался.
Я вообще-то в скриптах могу разобраться только по аналогии с тем , что уже ктото сделал, а литература мне не помогает, но с js на vbs переделать получилось.
Автор: cambit
Дата сообщения: 01.03.2010 08:10
vlth
Вот на vbs:
'Программа автоматической установки обновлений WINDOWS98SE

Set WSHShell = WScript.CreateObject("WScript.Shell")
Call Welcome()

WSHShell.Run "Update.bat",5,"True"

Sub Welcome()
Dim intDoIt
intDoIt = WshShell.Popup ("Выполнить установку критических обновлений Windows 98 SE?",, "Подтвердите действие", 65)
if intDoIt = 2 Then
WScript.Quit
End if
End Sub
'Запрос на перезагрузку
Set WshShell = WScript.CreateObject("WScript.Shell")
Call Welcom()

WshShell.Run "rundll32.exe shell32.dll,SHExitWindowsEx 2t",5,"False"
Sub Welcom()
Dim intDo
intDo = WshShell.Popup ("Установка завершена. Компьютер следует перезагрузить. Выполнить?",, "Подтвердите действие", 33)
if intDo = 2 Then
WScript.Quit
End if
End Sub
Автор: vlth
Дата сообщения: 01.03.2010 12:01
cambit, пока я только увидел ненужное повторное создание WshShell, что, конечно, не критично . В остальном всё, вроде, нормально. Т.е. если что-то не работает, то смотреть надо оставшееся (WSHShell.Run ...)

"Update.bat",5,"True" - здесь, наверное, надо указать путь к батнику.
"rundll32.exe shell32.dll,SHExitWindowsEx 2t",5,"False" - то же самое к .exe
Автор: vov4ka
Дата сообщения: 01.03.2010 13:58
Здравствуте все.Оставлю здесь свой пост-возможно найдeтся человек,который мне поможет. Хочу задать всем вам вопрос. Сам я в написании скриптов,тем полее в .Net полный дуб,но необходимо реализовать слудующую задачу. На серваке стоит вебморда,работающая на Asp.Net 2.0., в левой части которой есть несколько ссылок,в которых потом есть еще вложенные.Кто-то может сбацать прогу или скрипт,который ходит рекурсивно по всем ссылкам, и ищет кнопку,к примеру,"завершить задание".Когда находит-нажимает,выходит в самое начало дерева и ищет в следующем разделе и т.д.?

Помогите или,на худой конец, подскажите куда рыть,т.к. с такими задачами я не сталкивался,а решить ой как надо!!!
Автор: cambit
Дата сообщения: 01.03.2010 20:30
vlth
Да, работает. Но мне надо преобразавать его в ехе-файл, который будет записан на CD. Пробовал множеством программ. Но почти все создают самораспаковывающийся архив, который сначала, естественно, распаковывается во временную папку, а потом запускает скрипт - уже из временной папки, в результате вылетает ошибка - см. ссылку: http://narod.ru/disk/18365453000/err.JPG.html
Вы скажете :
Цитата:
"Update.bat",5,"True" - здесь, наверное, надо указать путь к батнику.

Да, но на разных компьютерах буква CD-диска может быть РАЗНОЙ!
ВОТ В ЧЕМ ПРОБЛЕМА! Я думал, что можно средствами скрипта после распаковки заставить работать его как бы из CD, а не из времеенной папки. Либо создать ехе-файл с помощью scriptCriptor, которая работает по другому и не создает временных папок (так по крайней мере на сайте производителя обещают). Но файл созданный в ХР не запускается из под 98SE, а версии для оного в инете не нашел. Может кто поделится?
(извините за повтор)
Автор: vlth
Дата сообщения: 01.03.2010 23:45
cambit, если батник будет находиться в одной директории со скриптом:
Код: ... left (wsh.ScriptFullName, InStrRev(wsh.ScriptFullName,"\")) & "Update.bat",5,"True"
Автор: cambit
Дата сообщения: 02.03.2010 08:54
vlth
Стоп. Скрипта у нас же нет, есть ехе-файл?
Автор: vlth
Дата сообщения: 02.03.2010 10:25

Цитата:
Стоп. Скрипта у нас же нет, есть ехе-файл?

Не понял... Что-то мешает создать exe заново, исправив скрипт?
Автор: cambit
Дата сообщения: 02.03.2010 16:53
Нет. Та же ошибка - не найден файл в строке 6. Вот она:
WSHShell.Run left (wsh.ScriptFullName, InStrRev(wsh.ScriptFullName,"\")) & "Update.bat",5,"True"
Автор: vlth
Дата сообщения: 02.03.2010 18:07
Так всё правильно. Только с True (уфф, сразу не заметил) кавычки убери. И проверь, чтобы скрипт в одной папке с батником лежал.
Автор: cambit
Дата сообщения: 02.03.2010 19:22
Не, мужики, тоже самое. Может батник и остальные файлы нужно указать как то в самой PrimalScript?
Автор: vlth
Дата сообщения: 02.03.2010 20:49
cambit, сначала, прежде чем exe запускать, нескомпилированным скриптом пользоваться пробовал? - если - да, и было всё нормально, тогда дело в компиляторе, наверное...
Автор: cambit
Дата сообщения: 02.03.2010 22:35
В том то и дело - скрипт некомпилированный работает отлично!!!
Ребята! - Спасибо огромное за помощь. Плюнул я на все эти компиляторы, создал SFX-архив, засунул туда ВСЕ файлы (в т.ч. wscript.exe) прописал в запуск - wscript win98up.vbs и все пошло на ура! Проблема решена!
Автор: tyff
Дата сообщения: 03.03.2010 04:56
Здавствуйте Знатоки!
Очень нужна VBS-помощь:
1. Есть два текстовых файла 1.тхт и 2.тхт.
2. 1.тхт содержит следующие поля:
Доход
Расход
За пользование сайтом
Служба поддержки
Ведение и учет
Жалобы
Добавить ХХХХХ
Убрать

3. 2.тхт содержит только одну строчку (например техт12345.техт123456) которая каждый день обновляется
4. Нужен скрипт который бы копировал из файла 2.тхт эту строчку вместо ХХХХХ в файле 1.тхт
Заранее благодарю!
Автор: vlth
Дата сообщения: 03.03.2010 08:12
tyff, непонятно, что убрать, а что добавить - Вы говорите о записях, а по описанию получается, что о полях.
Автор: tyff
Дата сообщения: 03.03.2010 08:53
Извиняюсь за путанницу, vlth : мне надо заменять ХХХХХ на техт12345.техт123456 с учетом того, что техт12345.техт123456 каждый день меняется.
Т.е если завтра в файле 2.тхт будет написано техт6789.техт123456 то 1.тхт должен выглядеть так:
Доход
Расход
За пользование сайтом
Служба поддержки
Ведение и учет
Жалобы
Добавить техт6789.техт123456
Убрать
Автор: quakerock
Дата сообщения: 03.03.2010 12:57
Всем привет.

Есть простой скрип, который копирует файлы:

Const OverWriteFiles = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFolder "C:\1" , "C:\2" , OverWriteFiles

Можно ли сделать так, что бы вызывалась консоль с подсчетом оставшегося времени, как при простом копировании в Windows? А не происходило копирование в теневом режиме.
Автор: vlth
Дата сообщения: 03.03.2010 12:59
tyff
Код: Dim fso, TxtStream
Dim Text1, Text2
Dim oRegExp

Const File1= "C:\1.txt"
Const File2= "C:\2.txt"

set fso=wsh.CreateObject("Scripting.FileSystemObject")

If fso.FileExists(File1) Then
    If fso.FileExists(File2) Then
        Set TxtStream = fso.OpenTextFile(File2)
    Text2 = TxtStream.ReadAll
    Set TxtStream = fso.OpenTextFile(File1)
    Text1 = TxtStream.ReadAll
    Set oRegExp = New RegExp
    oRegExp.Pattern = "техт[0-9]*.техт[0-9]*"
    Text1 = oRegExp.Replace(Text1, Text2)
    Set oRegExp = Nothing
    Set TxtStream = fso.OpenTextFile(File1, 2)
    TxtStream.Write Text1
    Set TxtStream = Nothing
    Set fso = Nothing         
Else
    MsgBox "Файл '" & File2 & "' не найден", _
        vbOKOnly + vbCritical
End If
Else
MsgBox "Файл '" & File1 & "' не найден", _
vbOKOnly + vbCritical
End If
Автор: tyff
Дата сообщения: 04.03.2010 00:31
Большое, человеческое спасибо,vlth ,
Я только заменил:

oRegExp.Pattern = "техт[0-9]*.техт[0-9]*"
на

oRegExp.Pattern = "техт(\w+)\.техт(\w+)\" <<<<<(\w+)\ в Regular Expression как "*" в батнике

И всё работает как надо.
vlth, вы-Волшебник!!!

Автор: vlth
Дата сообщения: 04.03.2010 08:48

Цитата:
Я только заменил: ...

tyff, а смысл? - шаблон теперь допускает отсутствие цифр после слова "техт". В таком случае, можно просто звёздочку поставить (oRegExp.Pattern = "техт*.техт*" ).
Автор: tyff
Дата сообщения: 05.03.2010 09:48
Принято, вы конечно правы,vlth.
Еще вопрос:

Имеется скрипт который проверяет имена файлов в определенной папке и записывает их в текстовый файл:

On Error Resume Next
Dim fso, folder, files, NewsFile,sFolder
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\test")
Set outfile = fso.CreateTextFile("c:\temp\testout.txt")
Set files = folder.Files

For each folderIdx In files
outfile.WriteLine(folderIdx.Name & ";" & folderIdx.DateCreated & ";" & folderIdx.DateLastModified)
Next
outfile.Close

А как сделать чтобы записывались только имена таких, чей размер равен 0.
Автор: vlth
Дата сообщения: 05.03.2010 11:07
tyff

Код: For Each folderIdx In Files
With folderIdx
If .Size = 0 Then outfile.WriteLine _
(.Name & ";" & .DateCreated & ";" & .DateLastModified)
End With
Next
Автор: tyff
Дата сообщения: 05.03.2010 18:57
Большое спасибо,vlth!
Это именно то что надо.
Автор: GRom V
Дата сообщения: 10.03.2010 12:45
Как можно сделать закрытие процесса по классу окна
Автор: SerBUser
Дата сообщения: 11.03.2010 04:40
Уже задавал этот вопрос: http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=1400#6. Повторюсь. Есть скрипт, который пользователей из AD экспортирует в Excel. Задача состоит в том, чтобы поменять определенные свойства пользователей, например, наименование предприятия или адрес e-mail и т.д. и из Excel обновить эти данные в AD. Не получается у меня никак.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

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


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