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

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

Автор: Gavigor
Дата сообщения: 29.08.2009 18:43

Цитата:
If fso.FileExists(FolderPath& "\" & "MyFile") Then
Set myFile = fso.GetFile(FolderPath & "\" & "MyFile")
myFile.Copy WScript.Path & "MyFile", True
MsgBox "Ура нашелся"
End If
копируют вот эти строчки, в папку самого скрипа. у меня копирует. вернее копировало когда было c:\temp и програм файлс, но как ты можешь заметить в этих случаях путь не заканчивается \, а в случае c:\ заканчивается поэтому вот тута FolderPath & "\" & "MyFile" получаются лишние слеши. поэтому нужно в тело If Then добавить еще MsgBox FolderPath, чтобы вывелся путь откуда копироваться собралось и понять почему не копирует.


туго для меня......
Автор: bomzzz
Дата сообщения: 29.08.2009 18:58
If fso.FileExists(FolderPath& "\" & "MyFile") Then
Set myFile = fso.GetFile(FolderPath & "\" & "MyFile")
myFile.Copy WScript.Path & "MyFile", True
MsgBox FolderPath & "\" & "MyFile"
End If

вместо ура нашелся должно вывести путь, если файл не скопируется то нужно подправить программу в смысле слешей. а если сюда вообще не попадает программа хотя файл лежит в какой то из подпапок, тогда надо анализировать пути на другом участке программы
Автор: Gavigor
Дата сообщения: 29.08.2009 19:15
путь пишется правильный...

Добавлено:
что дальше делать?....
Автор: bomzzz
Дата сообщения: 29.08.2009 19:29
ну тогда получается так работает только у меня на кмопилированных файлах. надо поискать в книге как более корректно это написать. или пописать маленькие скриптики чтоб установить как будет копироваться.

Добавлено:
у тебя же вроде раньше копировалось?

Добавлено:
кстати я касперскому настучал, про зряшное срабатывание на компилированные файлы. мне ответили через несколько часов и уже исправили ситуацию. надо по возможности и в другие антивирусы написать.
Автор: Gavigor
Дата сообщения: 29.08.2009 20:25

Цитата:
у тебя же вроде раньше копировалось?


нет.

к сожалению....

Автор: bomzzz
Дата сообщения: 30.08.2009 02:39
ну жди теперь когда старожилы форума объявяться. у меня копирует. скрипты сто лет назад отключил XP-AntiSpy. включал для USD BlackManos-а, но в ИЕ6 начали всплывающие окна лезть, причем при повторном отключении это не лечилось, пришлось систему восстаналивать. так что я больше их не включаю.
вот простейший скрип копирования.

Цитата:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set myFile = fso.GetFile("MyFile.txt")
myFile.Copy "MyFile", True

он копирует расположенный рядом со скрипом (в одной директории или папке) файл MyFile.txt в файл MyFile - ну то ист без расширения. переименовывает можно сказать.

вот только у меня екзешник
Автор: bomzzz
Дата сообщения: 30.08.2009 05:59
кстати вот эта строка излишек
myFile.Copy WScript.Path & "MyFile", True

и вот так будет копировать в папку скрипта
myFile.Copy "MyFile", True


Цитата:

MyFolderPath = InputBox("укажите путь для поиска", bomz, "C:\")
MyFile = InputBox("Укажите имя файла", bomz, "")
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
Call MyProcedure(MyFolderPath)
MsgBox "Фуххх!!!!"
Sub MyProcedure(FolderPath)
If fso.FileExists(FolderPath& "\" & MyFile) Then
Set myFile = fso.GetFile(FolderPath & "\" & MyFile)
myFile.Copy "MyFile", True
MsgBox "Ура нашелся"
End If
Set MyFolder = FSO.GetFolder(FolderPath)
For Each SubFolder In MyFolder.SubFolders
Call MyProcedure(FolderPath & "\" & SubFolder.Name)
Next
End Sub

http://narod.ru/disk/12580941000/File-Find.exe.html
10,3 КБ (10 602 байт)
Автор: Rush
Дата сообщения: 30.08.2009 07:50
Вот блин, развели на несколько страниц разговоров вокруг простых вещей...

Скрипт будет искать на всех дисках и копировать в папку со скриптом. Если будут с одинаковыми именами, то спросит.

Код:
on error resume next
set fso = createobject("scripting.filesystemobject")
filename = inputbox("Введите имя файла:", "Копирование файла")
for each i in fso.drives
if i.isready then subdirs(i.rootfolder)
next
sub subdirs(dir)
for each subdir in dir.subfolders
if err.number <> 0 then
err.clear
else
subdirs(subdir)
end if
on error resume next
next
enumfiles(dir)
end sub
sub enumfiles(dir)
for each file in dir.files
if filename = file.name then
if fso.fileexists(fso.getparentfoldername(wscript.scriptfullname) & "\" & filename) then
renfile = inputbox("Файл с таким именем уже существует." & vbcrlf & _
"Переименовать этот файл?", "Переименование файла", filename)
end if
if renfile <> "" then fname = renfile else fname = filename
fso.copyfile file, fso.getparentfoldername(wscript.scriptfullname) & "\" & fname
end if
next
end sub
wscript.echo "конец!"
Автор: Astra55
Дата сообщения: 30.08.2009 14:41
mihmig
Есть проблема, полистал топик и нашел нечто близкое

Цитата:
Ну если Вас сильно напрягает таскать за скриптом subiacl.exe(cacls.exe или regperm)
есть библиотека для использования в vbs-скриптах функций из dll.

Скрипт нужен для портабельных софтов, он запускается вместе с программой, делает свое дело, а при выходе из программы запускается повторно и опять таки выполняет свою задачу. Нужно записать ключи в следующую ветку реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root
причем, не просто записать, а таким образом:
При запуске программы
1. Проверить есть ли такой ключ, если нет, то перейти к пункту 2, если есть, то ничего не делать, просто выйти из скрипта
2. Дать разрешение на запись
3. Записать ключ
4. Возвратить исходный запрет на запись

При выходе из программы:
1. Дать разрешение на удаление ключа
2. Удалить ключ
3. Возвратить исходный запрет на запись

Устроит использование указанных консолей, только желательно без появления их окон.
Задача вроде несложная, но пока что никто не смог мне подсказать конкретное решение.


Автор: bomzzz
Дата сообщения: 30.08.2009 16:11
табе охота чтоб программу за тебю написали, а задача не интерестная - типовая.

Цитата:

Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\NewKey\","Value"
WshShell.RegWrite "HKEY_CURRENT_USER\NewKey\Param","Value","REG_SZ"
MsgBox WshShell.RegRead("HKEY_CURRENT_USER\NewKey\Param")
MsgBox WshShell.RegRead("HKEY_CURRENT_USER\NewKey\")
WshShell.RegDelete "HKEY_CURRENT_USER\NewKey\Param"
WshShell.RegDelete "HKEY_CURRENT_USER\NewKey\"


справочное пособие
http://narod.ru/disk/12530906000/Automation.chm.html
Руководство разработчика на WSH 2.0
Руководство разработчика на WSH 2.0
WinDjView-1.0.3-Setup

а если библиотеки свои хочешь замутить вот тут кладбище библиотек http://forum.script-coding.info/index.php
Автор: Astra55
Дата сообщения: 30.08.2009 16:48
bomzzz
Речь идет о
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root
так просто разрешение ни на запись, ни на удаление, не дается, только с изменением доступа вручную или же с ACL.
Чтобы было понятно, вот ссылка на ссылки:
http://www.google.ru/search?q=HKEY_LOCAL_MACHINE%5CSYSTEM%5CCurrentControlSet%5CEnum%5CRoot
То, что приведено в примере, мне не нужно, это без всяких скриптов пишется и удаляется. Была бы типовая, я бы не спрашивал. В Инете приемлемых способов не найдено, хотя я искал добросовестно.
Автор: bomzzz
Дата сообщения: 30.08.2009 16:57
я бы так и подумал если бы акцентировалось на правах доступа.
раз в ручную мона поменять права доступа значит можно и автоматически.
да уж - http://support.microsoft.com/kb/825751/ru

http://support.microsoft.com/kb/256614/ru
а у меня никаких запретов на этих ключах не стоит. может просто снять атрибут и назад его не ставить?
Автор: Ashi
Дата сообщения: 02.09.2009 10:16
Можно ли средстваим VBS сгенерить ярлык для файла и отправить его на рабочий стол

Добавлено:
Снимаю вопрос нашел тут
Автор: bomzzz
Дата сообщения: 08.09.2009 12:20
сколько лет я несколько раз в день, матеря все на свете, лазил в "меню-свойства папки-вид" или запускал тотал командер , чтобы изменить расширение файла:


Цитата:

Set WshShell = CreateObject("WScript.Shell")
If WshShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt") = "0" Then
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt","00000001","REG_DWORD"
Else
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt","00000000","REG_DWORD"
End If



блин как же експлорер перезапустить из скрипта, вернее "ОБНОВИТЬ", везде пишут про перезапуск, убить процесс и запустить снова. как же по английски будит обновить

File.Ext.Show.exe 10,2 КБ (10 454 байт)

батник на эту же тему,

Цитата:

SET MYNAME=%0
ECHO > %MYNAME:~0,-4%
REN *.* *.""
DEL %MYNAME:~0,-4%

удаляет у всех файлов в директории где он расположен расширения, кроме себя родимого

вот это оказывается разные обновить - левое F5, в этом деле бесполезное, а правое правильное.


если убить процесс эксплорер сам перезапускается, но это весь рабочий стол исчезает и длится несколько секунд, к тому же многие программы так написаны, что после этого могут и не появится назад.
Автор: mrLuca
Дата сообщения: 09.09.2009 20:14
Всем привет!
Сломал голову по такой вот задачке. Корпоративный портал у нас на https сидит. И появилась потребность разнообразить мёртвую стартовую страничку чем-то жизненным. Погодный информер, валютный. Естественно фик найдёшь такие информеры со скриптами на https, отсюда сообщение о нарушении безопасности на странице. Я так понял, что это НИКАК не обойти, кроме установки "отображать разнородное содержимое" причём у меня удалось, только для зоны Интернет (!): надёжные и местная интрасеть - не канает такая же настройка. Естественно умный лют вздребезднулся "это ж не изящно всех просить понизить безопасность всего интернета!". Согласен. А как? Кто-нибудь знает, как можно нахимичить в тегах чтоб оно проходило так? На крайний случай мне уже идея пришла - каким-то образом получать скриптом данные этих информеров, скидывать их в xml локальный файл и подтаскивать на https уже своё, безопасное. Но КАК это делать, я не знаю Кто-нибудь знает решения?
Автор: Nik_UA
Дата сообщения: 11.09.2009 11:15
Здравствуйте!
Есть код который множит два числа.
Он выдает результат 0,000185.
Подскажите как вывести в MsgBox число с плавающей точкой (1,85Е-4).

Спасибо.
Автор: bomzzz
Дата сообщения: 11.09.2009 21:22
перерыл пол интернета. как только не гуглил. в принципе полно таких вопросов про обновление эксплорера, и есть даже примеры на вбс скрипте - построенные на отправке в окно експлорера или рабочий стол F5 - реально конечно скрипты работают - но обновления експлорера не вызывают. вот нашел какой то загадочный ява скрипт - что он делал бог его знает - но тут есть сокраментальные строки oExplorer.Refresh(). ни у кого никаких мыслей не будет как обновить все окна эксплорера????

Цитата:

<script type="text/javascript">
function OnGridContextItemClicked(oGridMenu, args)
{
var menuItemText = args.get_item().get_text();
if (menuItemText == "UnZip")
{// 'UnZip' command
var oExplorer = $find("<%= RadFileExplorer1.ClientID %>");
var oAjaxPanel = $find("<%= RadAjaxPanel1.ClientID %>");

var selectedItem = oExplorer.get_selectedItem();
if (selectedItem.get_extension()=="zip")
{
//var itemExt = ; // get the extension of the current item

var itemPath = selectedItem.get_path(); // get the path of the current item
oAjaxPanel.ajaxRequest(itemPath); // Call the RadAjaxPanel1_AjaxRequest function on the server ;

//hier refreshen
oExplorer.refresh();
}
else
{
alert("Please, select a ZIP file");
}
}
}
</script>

это наверно страница интернет експлорера обновляется автоматически
Автор: slech
Дата сообщения: 13.09.2009 12:10
всем привет.
есть такая функция - подбирает последнюю строку файла

Цитата:

function getlastline (ascfile)
set fs = createobject("scripting.filesystemobject")
set file = fs.GetFile(ascfile)
set stream = file.OpenAsTextStream
stream.skip file.size
line = stream.line
stream.close
set stream = file.OpenAsTextStream
for i=1 to line-2
stream.skipline
next

getlastline = stream.readline
if not stream.atendofstream then
getlastline = stream.readline
end if

end function


можно ли подобрать не последнюю строку, а предпоследнюю ?

спасибо.
Автор: bomzzz
Дата сообщения: 13.09.2009 13:10
на вбс скрипе все мона. алгоритм примерно такой - цикл до конца файла, считываешь строку проверяеш EOF, записываешь ее во временную переменную, если конец файла то выходишь из цикла, а в во временной переменной предпоследний результат.
Автор: kolyas
Дата сообщения: 16.09.2009 09:32
форумчане подскажите, плиз,
писал себе удобство для подправки всех php файликов - вставка функции в тело всех функций по такому правилу

Код: XXX.Pattern = "function ([^(].+){"
Автор: Gavigor
Дата сообщения: 16.09.2009 11:42



Добавлено:

Цитата:
Вот блин, развели на несколько страниц разговоров вокруг простых вещей...

Скрипт будет искать на всех дисках и копировать в папку со скриптом. Если будут с одинаковыми именами, то спросит.

Код:
on error resume next
set fso = createobject("scripting.filesystemobject")
filename = inputbox("Введите имя файла:", "Копирование файла")
for each i in fso.drives
if i.isready then subdirs(i.rootfolder)
next
sub subdirs(dir)
for each subdir in dir.subfolders
if err.number <> 0 then
err.clear
else
subdirs(subdir)
end if
on error resume next
next
enumfiles(dir)
end sub
sub enumfiles(dir)
for each file in dir.files
if filename = file.name then
if fso.fileexists(fso.getparentfoldername(wscript.scriptfullname) & "\" & filename) then
renfile = inputbox("Файл с таким именем уже существует." & vbcrlf & _
"Переименовать этот файл?", "Переименование файла", filename)
end if
if renfile <> "" then fname = renfile else fname = filename
fso.copyfile file, fso.getparentfoldername(wscript.scriptfullname) & "\" & fname
end if
next
end sub
wscript.echo "конец!"


-как изменить для поиска конкретного файла и автоматического переименовывания.
-пробывал сюда: filename = МОЙ ФАЙЛ.Файл("Введите имя файла:", "Копирование файла") - что то ищет (по диспетчеру). потом пишет конец......но ничего не копирует. что то я не туда вписывал?
Автор: alroy
Дата сообщения: 16.09.2009 12:36
kolyas
Я думаю что тебе нужно смотреть в эту сторону

Код: Объект RegExp
Создание объекта
Пример:

Set objRegExp = CreateObject("VBScript.RegExp")


Возможности регулярных выражений:

1. Сравнить текст с заданным шаблоном. Например, введённый пользователем телефонный номер должен соответствовать шаблону "8(***)***-***-**", где * - любая цифра, но не буква.
2. Заменить или удалить из введённой пользователем строки текст, соответствующий заданному шаблону.
3. Извлечь из введённой пользователем строки текст, соответствующий заданному шаблону.
Регулярное выражение - это образец текста, который состоит из обычных символов и/или специальных метасимволов.


© 2004 http://small.h12.ru
Автор: kolyas
Дата сообщения: 16.09.2009 12:50
alroy
Вообщето XXX.Pattern это шаблон от


Код: Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern= ...
Автор: bomzzz
Дата сообщения: 16.09.2009 16:11
Gavigor

Цитата:

MyFile = "c:\Temp\MyDir\MyFile.txt"
Автор: Gavigor
Дата сообщения: 16.09.2009 17:20
bomzzz

искать на всех дисках!

т.е. путь файла неизвестен (в смысле на каком диске
Автор: bomzzz
Дата сообщения: 16.09.2009 19:00
Gavigor

Цитата:

MyFile = "MyFile.txt"

for each i in fso.drives
if i.isready then subdirs(i.rootfolder)
next
вот эти строки наверно по существующим дискам ищут - не знаю не пользовался сам такой конструкцией еще.
я могу только здесь поискать - но сейчас другие вещи в голове

Цитата:

http://narod.ru/disk/12530906000/Automation.chm.html

Руководство разработчика на WSH 2.0
Руководство разработчика на WSH 2.0

WinDjView-1.0.3-Setup
Автор: Gavigor
Дата сообщения: 16.09.2009 20:35
....
Автор: bomzzz
Дата сообщения: 16.09.2009 20:50
я на MASM подсел.
вот последнее что родил на вбс - чистильщик кеша иконок трея.
IconTrayCacheCleaner.RUS10,8 КБ (11 146 байт)
ccleaner можно сказать кеш не чистит, виндовская утилита - и весит 650 кб и не такая удобная и не учитывает случай когда кеш уже очищен и чиститься второй раз.
Автор: kolyas
Дата сообщения: 16.09.2009 20:59
.. ну кто-нить по шаблонам то подскажет?? ... очень надо ..

Добавлено:
одна интересная особенность:
если текст идет одной строкой

Код: function test(a=1, a=2, d$=[2,4]){ test(2.3){
Автор: Rush
Дата сообщения: 17.09.2009 12:52
kolyas
Попробуй так (не проверял):

Код: XXX.Pattern = "function ([^(].+?){"

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

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


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