Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
еще и необушные переменные в скрипте интерпретируются,
ИМЕННО!
Вот все, что я модернизировал в твоем скрипте:
Code
Const FOF_CREATEPROGRESSDLG = &H0& strTargetFolder = "[%2]" Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.NameSpace(strTargetFolder) objFolder.CopyHere "[%1]\*.*", FOF_CREATEPROGRESSDLG
Где: [%1] и [%2] - параметры, которые передаются через необушные переменные напрямую!
Quote (DEMBEL)
Да, достаточно... можно и маску типа *.jpg
Это уже веселее. Саму функцию оформлю, погоняю как следует и, если всё будет ОК, выложу, но завтра! Сегодня просто лениво уже...
Если систему не снесу снова.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Ну да! Но, все же, я бы не рискнул пока ударять в литавры, т.к. надо сначала все проверить, перепроверить и перепробовать! А там видно будет...
Тут уж тогда VB надо ещё изучать!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Не-е... Пусть молодое поколение-пополнение (которого все пребывает, слава Богу!) необукеров этим занимается! Тут, можно сказать, ЦЕЛИНА! ПРОСТОР! А мы, старички, по-старинке, скромненько - Delphi...
И только не говорите мне: - Пасть! Пасть!
Добавлено (14 Май 2009, 00:47) --------------------------------------------- Кстати, DEMBEL, какого-то необычного цвета рамка появилась у твоей аватарки...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
DEMBEL, зачем цвет у рамки аватарки сменил? Чукча расстроится!....
Quote (DEMBEL)
Хочешь такую? Теперь и анимированная. А то надо бы аватарки на форуме к общему знаменателю привести наверное...
Гм.. Чтобы все были в рамках, или в кружавчиках? Можно и портретную галерею создать!
По-поводу VB-функции... Этого VB-скрипта мало - нужен ещё обработчик ошибок! В принципе, это можно легко сделать и на языке NB, но тогда придется писАть отдельную необушную функцию по анализу входных параметров, и уже из неё вызывать VB-скрипт как отдельную самостоятельную функцию, что неудобно, т.к. потребуется парой распространять две функции: чисто необушную и VB. Дело тут в том, что нельзя в теле одной функции смешивать два скрипта необушный и VB. Гораздо разумнее и копирование и обработку ошибок сделать целиком на VB (если это возможно), т.е одной функцией! Копать сейчас VB ради этой мелочи мне в лом! Может дашь готовый VB-скрипт? В целом, функция дожна быть условной с двумя входными параметрами (папка-источник и папка-цель) и одним выходным, условным (True или False). Как вывести результат из VB-скрипта обратно в NeoBook я знаю.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
обработку ошибок сделать целиком на VB (если это возможно)
ну это пара пустяков... какие тут ошибки проверять? могу приделать проверку наличия целевой папки, в случае ее отсутствия автоматическое создание... существование исходных папок и файлов есть смысл проверять? Как задавать вопросы
приделать проверку наличия целевой папки, в случае ее отсутствия автоматическое создание...
Да это тоже можно, но тогда опционально, т.е. чтобы юзер сам мог "решить" заранее - создавать или нет.
Quote (DEMBEL)
существование исходных папок и файлов есть смысл проверять?
Естесственно! Стратегия такая - любые неожиданности-неприятности (по возможности) ИСКЛЮЧИТЬ! Хотя, от дурака защиты не бывает! Но все же... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Ладно, камрады, щасс тяпну пивка и сяду построгаю несколько интересных скриптов для использования с nb, просто для наглядности и демонстрации возможностей... Все что вы бы хотели сделать (речь идет о системных возможностях), но не получилось, пишем сюда предложения, я постараюсь рассмотреть их. Как задавать вопросы
пишем сюда предложения, я постараюсь рассмотреть их.
В трех экземплярах?
Пойду тоже "по-пивку", а потом... систему сносить!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Peter, покажи готовый проект человеку... Щас я обработку ошибок приделаю. А как тебе переменную возврата ошибки вывести, как ты ее достанешь? Просто написать типа FolderExist="False" и все, ты достанешь из скрипта в нб этот "False" ? Как задавать вопросы
Сайт глючит что-то... короче, не знаю как ты Peter будешь вынимать переменные возврата ошибок, я кое-что нацарапал, вроде пашет... проверять на наличие исходных файлов с использованием маски не выходит, если файл то конкретный. Либо папку, как я и сделал. Если папки нет, то в переменную записывается флаг что есть ошибка и скрипт закрывается. Также проверит на наличие целевой папки, если ее нет то две опции - создать автоматом, или завершить скрипт с выводом ошибки в переменную. Эта опция зависит от входящей переменной Auto, если она равна 1 то создаст папку сам, если не равна 1 то закроется. Дополнительные комментарии в файле copy_info.vbs, сам код без комментариев и предупреждений в файле copy_code.vbs
не знаю как ты Peter будешь вынимать переменные возврата ошибок
Quote (DEMBEL)
я кое-что нацарапал, вроде пашет...
Посмотрим...
Quote (DEMBEL)
проверять на наличие исходных файлов с использованием маски не выходит,
Странно... Ну это совсем просто и в самой NB организовать. Тем более - странно!...
Только "смотреть" все буду завтра вечером, сегодня уже ни сил, ни желания нет сорри...
Предварительно... Дембель, мне непонятно вот это:
Code
Else
'Проверяем существование целевой папки, если значение 'переменной Auto равно 1 то папка создается автоматом 'и происходит копирование.
Auto=1
If Auto=1 then
Я, конечно, не знаток VB, но получается, что сначала мы присваиваем переменной Auto единицу, а тут же проверяем чему равно Auto ! Чего-то меня на этом месте глючит... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Я, конечно, не знаток VB, но получается, что сначала мы присваиваем переменной Auto единицу, а тут же проверяем чему равно Auto !
Ну да. Переменную Auto ты редактируешь по своему усмотрению, это "переключатель" - либо делать папку автоматом и копировать, либо нет. Поставишь Auto=0 тогда не будет папку делать а вернет ошибку и закроется.
Добавлено (15 Май 2009, 01:06) ---------------------------------------------
Quote (Peter)
Да это тоже можно, но тогда опционально, т.е. чтобы юзер сам мог "решить" заранее - создавать или нет.
Переменную Auto ты редактируешь по своему усмотрению
Понял! Сначала было подумал, что это у тебя типа "обязаловка".
Quote (DEMBEL)
Сам так хотел
Ну да. Правда, мне привычней True/False... Лады... "Основа" у меня теперь есть. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Ну напиши как true, я тоже так сперва написал, но потом подумал что с числовыми переменными проблем меньше будет... Auto="True" If Auto="True" Then ... Как задавать вопросы
Да именно так я и предполагал сделать. Кстати, VB-скрипт чуствителен к регистру? Т.е. в VB TRUE, true, True, tRUE, и т.п. одно и то же, или же нет? - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
нет -- Продолжаем читать MSDN... Разберем обьект Folder. 1. Определение деталей для указанного файла из папки
dim objShell, objFolder, objFolderItem set objShell = CreateObject("Shell.Application") strFolder="C:\Windows" strFile="winhelp.exe" set objFolder = objShell.NameSpace(strFolder) if (not objFolder is nothing) then set objFolderItem = objFolder.ParseName(strFile) if (not objFolderItem Is Nothing) then dim objInfo objInfo = objFolder.GetDetailsOf(objFolderItem, -1) WScript.Echo "Детали - " & objInfo end if set objFolderItem = nothing end if set objFolder = nothing set objShell = nothing
Редактируемые переменные: Зеленые переменные - имя папки и файла соответственно Синяя переменная - содержит возвращаемую строку с информацией (тип - string) Красная переменная - оператор, указывает какие данные файла надо вытащить Имеет следующие значения 0 : Имя файла 1 : Размер файла 2 : Тип файла 3 : Дата и время последней модификации 4 : Атрибуты файла -1 : Краткая информация о файле
2. Создание папки
dim objShell, objFolder strParent="C:\" strFolder="TestFolder" set objShell = CreateObject("Shell.Application") set objFolder = objShell.NameSpace(strParent) if (not objFolder is nothing) then objFolder.NewFolder(strFolder) end if set objFolder = nothing set objShell = nothing
Редактируемые переменные: strParent - имя родительской папки (должна существовать) strFolder- имя создаваемой папки
Сейчас попробовал... Работает, но не так как надо - в частности обработку ошибок надо переделывать, и вот это:
Quote (DEMBEL)
Продолжаем читать MSDN... Разберем обьект Folder
в самый раз будет!
Кстати, WScript.Quit оказалось лишним. Дембель, спасибо за инфу! Ещё чего подкинь по теме, если не трудно будет.
Разбираться - завтра! А пока - баюшки... В Питере уже четвертый час ночи!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Dim strFolder, objShell, objItem, output strFolder="C:\Windows" Set objShell = CreateObject("Scripting.FileSystemObject") Set objItem = objShell.GetFolder(strFolder) ObjInfo = objItem.Attributes WSCript.Echo "Детали - " & ObjInfo set objItem = nothing set objShell = nothing
Редактируемые переменные: strFolder - имя папки для проверки ObjInfo - содержит возвращаемую строку с информацией Красная переменная - оператор, указывает какие данные папки надо вытащить Имеет следующие значения: objItem.Attributes : Возвращает атрибуты (0-не заданы, 1-только чтение, 2-скрытая, 4-системная, 8-метка тома, 16-папка и еще некоторые...) objItem.DateCreated : Дата и время создания objItem.DateLastAccessed : Дата и время последнего доступа objItem.DateLastModified : Дата и время последнего изменения objItem.Drive : Буква диска, в котором расположена папка objItem.Name : Имя папки objItem.ParentFolder : Имя родительской папки objItem.Path : Путь к папке objItem.Size : Размер папки -- Другие значения, которые не будут работать без корректировки скрипта выше (требуется добавить парсинг элементов): objItem.Files : Перечисление всех файлов в папке objItem.SubFolders : Перечисление всех подпапок в папке
Ну хватит, теперь я думаю понятны перспективы использования скриптов в Neobook. Если что, дальше инфа по запросу...
Quote (Peter)
в частности обработку ошибок надо переделывать, и вот это:
переделаем, я не до конца вкурил как конкретно надо сделать, сидел выдумывал все... Команды WSCript.Echo - можете выкинуть, это типа Message для проверки... WScript.Quit - выход, не всегда можно выкинуть, например в условиях If... Then в конце скрипта можно выкинуть
И еще чуть-чуть... Начнем немножко разбирать класс обьектов файловой системы (FileSystemObject), научимся получать их свойства и проводить системные операции.
1. Пример получения размера файла (+ добавим обработку условия когда размер превышает заданный порог)
Option Explicit Dim FSO, File, strSize, strFile, setSize strFile="c:\pagefile.sys" setSize=600 Set FSO = CreateObject("Scripting.FileSystemObject") Set File = FSO.GetFile(strFile) strSize = File.Size\1024\1024 Wscript.Echo "Размер: " & File.Name & " размером " & strSize &"Mb. Установлен порог " & setSize & " Mb." If strSize > setSize Then Wscript.Echo "Предупреждение: " & File.Name & " больше, чем порог в " & setSize &" Mb" End If Set File = Nothing Set FSO = Nothing
Редактируемые переменные: strFile - путь к требуемому файлу setSize - порог размера (Mb) strSize - в эту переменную возвращается размер файла (Mb)
При возникновении условия strSize > setSize появится уведомление (Wscript.Echo), в принципе действие может быть любое, ну или просто поставить "флаг" в переменную и вывести ее для обработки в neobook (хотя лучше сразу в скрипте, конечно, но со сложными конструкциями я не всегда справляюсь ...)
Вместо Size можно использовать и другие операторы (аналогичные операторам для папок (см. выше), т.к. они все стандартные) для получения других свойств файла, например strSize = File.Path (1024\1024 писать в этом случае не надо, это форматирование для вывода размера файла в Мб) Оглашаю весь список свойств: Name, DateLastModified, DateCreated, DateLastAccessed, Drive, ParentFolder, Path, ShortName, ShortPath, Type...
В следующем примере (если успею сделать) мы научимся ВНИМАНИЕ! столь излюбленному приемчику - создание/открытие внешнего файла и запись туда построчно результатов работы скрипта.
Bodi, папку "Мой компутер" можно элементарно открыть при помощи... Delphi! Но, делать ради этого плагин как-то, гм... несерьезно! Действительно, может VB поможет? Вся надежда на Дембеля...
Добавлено (15 Май 2009, 14:32) --------------------------------------------- DEMBEL, а вот с этими делами WSCript.Echo и WScript.Quit может иметь место засада! Не работают! Вылетает сообщение об ошибке Object required:"WScript" ! Объяснение я нашел здесь. Но, как ещё аварийно выйти из VB-скрипта, пока не врубаюсь... В принципе, в нашем конкретном случае можно обойтись и без WScript.Quit (что я и сделал), но на будущее...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Блин, у меня работают... Ты же про скрипт копирования говоришь? Может, так заработают (см. прикр.)...
Quote (Bodi)
открытию папки Мой компьютер
С виртуальными папками Мой компутер, Корзина и прочими тут проблема... Можно открыть стандартный диалог "выбора папки" и открыть выбранную папку в эксплорере, так вам покатит?
Const WINDOW_HANDLE = 0 Const NO_OPTIONS = 0
Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder _ (WINDOW_HANDLE, "Выберите папку:", NO_OPTIONS) Set objFolderItem = objFolder.Self strPath = objFolderItem.Path
objShell.Explore strPath
Или просто конкретную папку (кроме виртуальных Мой компьютер, Корзина и прочих)
Set objShell = CreateObject("Shell.Application") strPath = "C:\Folder1" objShell.Explore strPath
Похоже на то, что в NB для функций vbs "свой" выход в конце vb-скрипта. Кстати, такая вещь Set WSHShell = CreateObject("WScript.Shell") прокатывает... В общем, надо искать другие пути "аварийного" выхода... Может есть в VB что-нибудь типа GoTo или GoToLabel, короче - переход к метке?
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться