Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Переменные среды на CD\DVD (http://forum.oszone.net/showthread.php?t=266553)

Tier2 20-08-2013 15:58 2204630

Переменные среды на CD\DVD
 
Здравствуйте уважаемые форумчане! Возникла проблема с написанием авторана для запуска программы с ДВД диска. Вообщем вопрос в следующем: имеется авторан меню (сделаное в AutoPlay Menu Builder) которое кидается в корень диска и вместе с ним кидается туда же папка, которая каждый раз меняет свое название. Если папку постоянно переименовывать в какое то постоянное имя которое задается в AutoPlay Menu Builder (например %CDROM%\123\...) то все работает нормально, ну а так как необходимо сохранить настоящее имя папки, то фокус с переименованием не канает. Заранее извиняюсь если подобная тема поднималась на форуме или я написал в не тот раздел.
Заранее огромное спасибо всем кто откликнется или поможет

Iska 20-08-2013 16:25 2204651

Tier2, так что Вам нужно-то?

Tier2 20-08-2013 16:32 2204654

Мне нужно помочь с переменной папки на CD чтоб авторан ее видел и запускал из этой папки exeшник (имя его неизменяется) при наступлении события (нажатие на кнопку).
1. Есть папка с постоянно изменяющимся названием (в этой папке есть исполняемый файл, который необходимо запускать при нажатии на кнопку в меню авторана) - папка записывается в корень диска
2. Авторан меню - записывается в корень диска
3. При нажатии на кнопку в авторан меню появлялось окошко с вопросом куда скопировать данную папку с сохранением ее названия.

Путь я использовал для запуска исполняемого файла: %CDROM%\%PATH%\123.exe - не работает, либо я что то не так делаю

Надеюсь более понятнее в этом сообщении сформулировал задачу.

Iska 20-08-2013 17:44 2204700

Tier2, то есть, Вы не хотите каждый раз пересоздавать меню в AutoPlay Menu Builder'е, указывая новый путь, так?

Цитата:

Цитата Tier2
Путь я использовал для запуска исполняемого файла: %CDROM%\%PATH%\123.exe - не работает, либо я что то не так делаю »

Из документации:
читать дальше »
Цитата:

Macros
In action Run Program, Open Document, Explore and Launch Slide Show, you must type file name or folder name with full path, and you can use these macros:

%CDROM%: CD-ROM driver letter, no matter what the driver letter specified
%WinDir%: Windows directory
%SysDir%: System directory
%Desktop%: Desktop directory
%%ENV-VARNAME%%: The value of system environment variable 'VARNAME'

Actually, %CDROM% indicates the location of .apm files (or executables for stand-alone menus), and in design mode, it is the project folder. Normally, when you burn it, the executable and .apm file should be in the root path of CDROM, so %CDROM% indicates the CDROM driver letter by default.

For example, if you want load a file named letter.doc in a sub directory of your CDROM, just type it as %CDROM%\subdirectory\letter.doc. You should create the same folder structure as your CDROM under your project directory, and the program converts project path to %CDROM% automatically if you choose files or folders under project folder. You can also create a virtual drive mapping contents of your project directory with Virtual Drive Manager.

Вы там видите «%PATH%»? Я — нет. Что Вам даёт использование «%PATH%»? Откуда Вы его взяли?


Как я понял, судя по Linasoft - AutoPlay Menu Builder, EZ MP3 Creator:
Цитата:

Features
* Just thinking, no programming.
— Ваша хотелка в рамках данного продукта не реализуема, разве что играться с JavaScript для динамического формирования ссылок с «apm://» протоколом на html-страницах, но это уже чересчур даже для меня.

Tier2 20-08-2013 18:00 2204711

Цитата Iska:
Tier2, то есть, Вы не хотите каждый раз пересоздавать меню в AutoPlay Menu Builder'е, указывая новый путь, так? »

Совершенно верно.
Я думал возможно ли написать скрипт (находящийся в корне диска) который при клике по кнопке будет запускатся и сканировать (парсить) название папки и запускать из нее указаный файл.
Так же можно поступить с диалогом сохранения папки на НDD

Iska 20-08-2013 18:08 2204715

Цитата:

Цитата Tier2
Я думал возможно ли написать скрипт (находящийся в корне диска) который при клике по кнопке будет запускатся и сканировать (парсить) название папки и запускать из нее указаный файл. »

Думаю, можно.

По каким признакам будем определять искомый файл? Начало понятно: ищем на том же диске, где будет расположен скрипт. Далее: ищем только в каталогах первого уровня вложенности от корневого? Ищем что: заранее известное имя файла, або по каким иным признакам — версия, подпись, свойства?

Цитата:

Цитата Tier2
Так же можно поступить с диалогом сохранения папки на НDD »

Давайте с одним сначала решим, дабы не путаться.

Tier2 20-08-2013 18:17 2204723

Спасибо за помощь. Ищем в каталоге первого уровня от корневого исполняемый файл с именем OneVolumeViewer.exe

Iska 20-08-2013 18:28 2204732

Цитата:

Цитата Tier2
Ищем в каталоге первого уровня от корневого исполняемый файл с именем OneVolumeViewer.exe »

Ясно. Пробуйте:
Код:

Option Explicit

Const strFileName = "OneVolumeViewer.exe"

Dim objFolder
Dim strPath


With WScript.CreateObject("Scripting.FileSystemObject")
        For Each objFolder In .GetDrive(.GetDriveName(WScript.ScriptFullName)).RootFolder.SubFolders
                strPath = .BuildPath(objFolder.Path, strFileName)
               
                If .FileExists(strPath) Then
                        WScript.CreateObject("WScript.Shell").Run strPath, 1, False
                       
                        Exit For
                End If
        Next
End With

WScript.Quit 0

Скрипт можно класть в любое место диска.

Tier2 20-08-2013 18:42 2204740

Сохранил скрипт с расширением ехе и кинул в корень - при запуске получаю окно с неподдерживаемым 16 битным приложением.
Система Вин 7 х64

Iska 20-08-2013 18:45 2204745

Цитата:

Цитата Tier2
Сохранил скрипт с расширением ехе »

Сохраните с расширением «.vbs».

Tier2 20-08-2013 19:09 2204761

Сохранил в vbs - выдает ошибку с ассоциацией файла, хотя стоит ассоциация с Microsoft ® Windows Based Script Host

Iska 20-08-2013 19:49 2204782

Tier2, у меня работает.

Покажите скриншот, где будет видно, как Вы задали запуск скрипта. Укажите местоположение файла проекта.

Tier2 20-08-2013 20:09 2204797


Tier2 20-08-2013 21:01 2204821

Ссылка на скрипт и сам скрипт срабатывает (видно по мелькающему окну консоли) , но вот OneVolumeViewer.exe не запускает

Что в скрипте надо удалить чтоб консоль не закрывалась и можно было прочитать что там написано?

Iska 20-08-2013 21:13 2204823

Вы не указали:
Цитата:

Цитата Iska
Укажите местоположение файла проекта. »

Жду.

Цитата:

Цитата Tier2
Ссылка на скрипт и сам скрипт срабатывает (видно по мелькающему окну консоли) »

Не должно быть окна консоли.

Попробуйте такой вариант для отладки:
читать дальше »
Код:

Option Explicit

Const strFileName = "OneVolumeViewer.exe"

Dim objFolder
Dim strPath


With WScript.CreateObject("Scripting.FileSystemObject")
        For Each objFolder In .GetDrive(.GetDriveName(WScript.ScriptFullName)).RootFolder.SubFolders
                strPath = .BuildPath(objFolder.Path, strFileName)
               
                MsgBox strPath
               
                If .FileExists(strPath) Then
                        MsgBox strPath, vbOKOnly + vbInformation, "Found!"
                       
                        WScript.CreateObject("WScript.Shell").Run strPath, 1, True
                       
                        Exit For
                End If
        Next
End With

MsgBox "That All!"

WScript.Quit 0


Будет перечислять все пути, в которых будет искать искомый файл.

Tier2 20-08-2013 21:25 2204829

файл находит, но

Iska 20-08-2013 21:33 2204837

Tier2, файл действительно называется «OneVolumeViewer.exe»? Покажите текст окна сообщения «Found!» из отладочного варианта скрипта:
Цитата:

Код:

---------------------------
Found!
---------------------------
E:\qww\OneVolumeViewer.exe
---------------------------
ОК 
---------------------------


(достаточно просто нажать «Ctrl-C» для копирования содержимого окна в буфер обмена).

Tier2 20-08-2013 21:39 2204841


затем по нажатии ок

Iska 20-08-2013 21:44 2204844

Tier2, спасибо, ясно. Наличие пробелов в пути ;). Пробуйте:
читать дальше »
Код:

Option Explicit

Const strFileName = "OneVolumeViewer.exe"

Dim objFolder
Dim strPath


With WScript.CreateObject("Scripting.FileSystemObject")
        For Each objFolder In .GetDrive(.GetDriveName(WScript.ScriptFullName)).RootFolder.SubFolders
                strPath = .BuildPath(objFolder.Path, strFileName)
               
                If .FileExists(strPath) Then
                        WScript.CreateObject("WScript.Shell").Run """" & strPath & """", 1, False
                       
                        Exit For
                End If
        Next
End With

WScript.Quit 0


Tier2 20-08-2013 21:53 2204848

Iska это Вам приогромнейшее спасибо - теперь все заработало!!!
Теперь как прикрутить сохранение к этому? Например чтоб при нажатии на кнопку выскакивало диалоговое окно проводника с предложением сохранить папку с имеющимся названием на HDD
Вернее не к этому скрипту а просто отдельным скриптом - чтоб название имеющейся папки не изменялось?

Iska 20-08-2013 21:56 2204849

Цитата:

Цитата Tier2
теперь все заработало!!! »

Ну, и славненько ;).

Цитата:

Цитата Tier2
Теперь как прикрутить сохранение к этому? Например чтоб при нажатии на кнопку выскакивало диалоговое окно проводника с предложением сохранить папку с имеющимся названием на HDD »

Ничего не понял. Поясните.

Tier2 20-08-2013 22:07 2204852

сделал я отдельную кнопку "сохранить на диск" - при ее нажатии запускается скрипт который вызывает окно проводника с предложением куда сохранить папку в которой расположен наш исполняемый файл(OneVolumeViewer.exe)

Iska 20-08-2013 22:44 2204868

Tier2, я не пойму тут две вещи: первое — что значит «сохранить папку», второе — что требуется сделать.

Tier2 20-08-2013 23:02 2204873

попытаюсь объяснить - у нас есть папка в корне CD диска (эта та папка в которой расположен наш OneVolumeViewer.exe) , при нажатии на кнопку в меню авторана "сохранить на диск" - выскакивает окно с вопросом или окно проводника с вопросом "Куда" сохранять (скопировать) данную папку например типа такого:


Папка со всем ее содержимым копируется на жесткий диск по нажатии "Копировать" после указания пути

Iska 20-08-2013 23:56 2204884

Tier2, ясно. Ну, а вопрос-то в чём? Что-то не работает?

Tier2 21-08-2013 00:11 2204887

Нужен сам скрипт)))

Iska 21-08-2013 00:45 2204895

Цитата:

Цитата Tier2
Нужен сам скрипт))) »

А… :(.

С этим будут проблемы — окно обзора папок будет появляться на заднем плане:
Код:

Option Explicit

Const strFileName = "OneVolumeViewer.exe"

Const EditBox = &H10


Dim strSourceFolder

Dim objShell
Dim objDestFolder


strSourceFolder = FindFolderForFile()

If Not IsEmpty(strSourceFolder) Then
        Set objShell = WScript.CreateObject("Shell.Application")
       
        Set objDestFolder = objShell.BrowseForFolder(0, "Select destination folder to copy", EditBox)
       
        If Not objDestFolder Is Nothing Then
                WScript.Echo objDestFolder.self.Path
               
                objDestFolder.CopyHere objShell.NameSpace(strSourceFolder)
        End If
Else
        WScript.Echo "Can't find source folder for [" & strFileName & "]."
End If

WScript.Quit 0

Function FindFolderForFile()
        Dim objFolder
       
        With WScript.CreateObject("Scripting.FileSystemObject")
                For Each objFolder In .GetDrive(.GetDriveName(WScript.ScriptFullName)).RootFolder.SubFolders
                        If .FileExists(.BuildPath(objFolder.Path, strFileName)) Then
                                FindFolderForFile = objFolder.Path
                               
                                Exit For
                        End If
                Next
        End With
End Function


Tier2 21-08-2013 00:53 2204897

Iska низкий Вам поклон!!! Все работает - это то что нужно, только вот одна загвоздка - как убрать всплвыющее окно подтверждения после нажатия кнопки "Копировать"?

Iska 21-08-2013 01:05 2204902

Цитата:

Цитата Tier2
только как убрать всплвыющее окно после нажатия кнопки "Копировать"? »

Чем не нравится? Стиль Проводника.

Если совсем не хочется видеть прогресс:
Код:

                objDestFolder.CopyHere objShell.NameSpace(strSourceFolder), 4
Дабы дополнительно перезаписывал существующие объекты без запросов:
Код:

                objDestFolder.CopyHere objShell.NameSpace(strSourceFolder), 4 + 16

Tier2 21-08-2013 01:07 2204904

Цитата Iska:
Чем не нравится? Стиль Проводника. »

Это пять балов! Под столом)

Вы меня немного не поняли - я не имел ввиду сам прогресс копирования, я имел ввиду, что после выбора папки куда копировать появляется вышеуказанное окно и пока не нажмешь "ОК" копирование не пойдет. Так вот как это окно пропустить или исключить вообще

Iska 21-08-2013 01:16 2204909

Tier2, когда писал, ещё не видел Вашей правки — скриншота — и потому понял Вас неверно.

Это я пропустил отладочное сообщение. Просто удалите строку:
Код:

WScript.Echo objDestFolder.self.Path
из кода. Приношу свои извинения.

Tier2 21-08-2013 01:26 2204912

Iska, приогромнейшее Вам спасибо за помощь - будете в Харькове с меня пиво. Вы мне помогли решить все проблемы. Еще раз спасибо и низкий Вам поклон


Время: 02:52.

Время: 02:52.
© OSzone.net 2001-