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

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

angel_lyucifer 13-12-2016 02:32 2695233

Окно для выбора файла.
 
Привет всем, нужна ваша помощь....
Нужен скрипт который бы открывал окно для выбора файла При выборе файла скрипт должен сохранить текущий путь в текстовый файл. Я вам ниже дал скрипт, который должен открывать окно для выбора файла, но он выдаёт ошибку(не работает). Помогите переделать скрипт.

Заранее благодарю.



Код:

Set OpenDialog = CreateObject("MSComDlg.CommonDialog") 'Microsoft Common Dialog Control
With OpenDialog
    .DialogTitle = "Откройте нужный Вам файл!"
    .InitDir = "C:\WINDOWS\"
    .Filter = "Все файлы (*.*)|*.*|Программы (*.com,*.exe)|*.com;*.exe|Текст (*.txt,*.log)|*.txt;*.log"
    .FilterIndex = 2
    .Flags = 2621952
    .MaxFileSize =32000
    .ShowOpen
    Filename = .Filename
End With

If (Len(OpenDialog.FileName)= 0) Then
    WScript.Echo "Файлы не выбраны!"
    WScript.Quit 1
End If

files = Split(OpenDialog.Filename, vbNullChar)
count_files = UBound(files)
If count_files > 0 Then
    path = files(0) + "\"
    For i = 1 To count_files
        WScript.Echo path + files(i)
    Next
Else
    WScript.Echo files(0)
End If


Iska 13-12-2016 09:11 2695270

Цитата:

Цитата angel_lyucifer
но он выдаёт ошибку »

Какую?

В каком окружении исполняется скрипт?

angel_lyucifer 14-12-2016 00:09 2695480

Вложений: 1
Цитата:

Цитата Iska
В каком окружении исполняется скрипт? »

Поясните пожалуйста что это такое? Ошибка на скрине...
Мне нужен скрипт типа обзора файлов. Скрипт будет запускаться bat-ником. После этого должно открыться стандартное окно поиска файлов для rar-архивов. После выбора файла окно закрывается и рядом со скриптом генерируется текстовый файл, в котором сохраняется полный путь к указанному файлу.

Iska 14-12-2016 01:26 2695486

Цитата:

Цитата angel_lyucifer
Ошибка на скрине... »

Можно было просто нажать Ctrl-C в этом диалоге.


Цитата:

Цитата angel_lyucifer
Поясните пожалуйста что это такое? »

Ровно то, что написано. Невозможно создать объект указаного класса, потому как либо не зарегистрирована библиотека COMDLG32.OCX, либо вообще отсутствует (в скобках отмечу, что она к тому же требует и лицензирования).

Цитата:

Цитата angel_lyucifer
Мне нужен скрипт типа обзора файлов. »

Можете попробовать рецепты отсюда: vbscript: вызов интерактивного диалога открытия файла — Windows Script Host, HTA (VBScript, JScript) — Коллекция скриптов и идей — Серый форум.

angel_lyucifer 14-12-2016 02:30 2695493

Цитата:

Цитата Iska
Можете попробовать рецепты отсюда: vbscript: вызов интерактивного диалога открытия файла — Windows Script Host, HTA (VBScript, JScript) — Коллекция скриптов и идей — Серый форум. »

Данный рецепт взял я именно от туда, 2 других рецепта тоже не работают...

Код:

Этот скрипт выдаёт ошибку

---------------------------
Windows Script Host
---------------------------
Сценарий:        D:\Лаболатория\SMOG\open.vbs
Строка:        1
Символ:        1
Ошибка:        Невозможно создание объекта контейнером ActiveX: 'UserAccounts.CommonDialog'
Код:        800A01AD
Источник:        Ошибка выполнения Microsoft VBScript

---------------------------
ОК 
---------------------------
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "WSH скрипты (*.vbs, *.js)|*.vbs;*.js|Все файлы (*.*)|*.*"
objDialog.FilterIndex = 2
objDialog.InitialDir = "C:\"
intResult = objDialog.ShowOpen
If intResult = 0 Then
    Wscript.Quit
Else
    Wscript.Echo objDialog.FileName
End If

или
Код:

Этот скрипт выдаёт ошибку
---------------------------
Windows Script Host
---------------------------
Сценарий:        D:\Лаболатория\SMOG\open.vbs
Строка:        1
Символ:        1
Ошибка:        Невозможно создание объекта контейнером ActiveX: 'SAFRCFileDlg.FileOpen'
Код:        800A01AD
Источник:        Ошибка выполнения Microsoft VBScript
---------------------------
ОК 
---------------------------
Set objDialog = CreateObject("SAFRCFileDlg.FileOpen")
intResult = objDialog.OpenFileOpenDlg
WScript.Echo "Результат операции: " & CStr(intResult)
WScript.Echo "Выбран файл: " & objDialog.FileName


Iska 14-12-2016 02:40 2695495

angel_lyucifer, либо заполняйте свою конфигурацию, либо указывайте условия исполнения, в данном случае — ОС. «UserAccounts.CommonDialog» и «SAFRCFileDlg.FileOpen» — основаны на библиотеках, идущих в комплекте с Windows XP.

Petya V4sechkin 14-12-2016 08:52 2695509

angel_lyucifer, ещё варианты VBScript File Browser.

angel_lyucifer 15-12-2016 01:42 2695832

Цитата:

Цитата Petya V4sechkin
Petya V4sechkin Petya V4sechkin»

Как добавить фильтр в скрипт?
Код:

Function BrowseForFile()
    With CreateObject("WScript.Shell")
        Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
        Dim tempFolder : Set tempFolder = fso.GetSpecialFolder(2)
        Dim tempName : tempName = fso.GetTempName() & ".hta"
        Dim path : path = "HKCU\Volatile Environment\MsgResp"
        With tempFolder.CreateTextFile(tempName)
            .Write "<input type=file name=f>" & _
            "<script>f.click();(new ActiveXObject('WScript.Shell'))" & _
            ".RegWrite('HKCU\\Volatile Environment\\MsgResp', f.value);" & _
            "close();</script>"
            .Close
        End With
        .Run tempFolder & "\" & tempName, 1, True
        BrowseForFile = .RegRead(path)
        .RegDelete path
        fso.DeleteFile tempFolder & "\" & tempName
    End With
End Function
MsgBox BrowseForFile


Serguei Kouzmine 19-12-2016 04:33 2696764

почему не подходит Powershell ?


Function Get-FileName($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
Out-Null

$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "All files (*.*)| *.*"
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.filename
}

hp1nt0 20-12-2016 01:22 2697020

Зайдите на http://www.robvanderwoude.com/batchtools.php
Поскрольте до OpenFileBox (2) Batch tool to present an Open File Dialog and return the selected file path
и скачайте. Это утилита командной строки делающая то что вам нужно.
Для записи в текстовичок просто ставите ридерект >>

vadjliss 31-12-2016 09:11 2699803

ребята выдаёт ошибку помогите
Do
a = inputbox("Столица нашей России")
if a = Москва then
msgbox "Да это правильный ответ"
Exit do
Else
msgbox "Нет не правильно"
End if
Loop

Iska 31-12-2016 09:30 2699804

vadjliss, для оформления кода используйте тэг [code].

Цитата:

Цитата vadjliss
выдаёт ошибку »

Слово «Москва» возьмите в кавычки.

Кроме того, у Вас там ещё две ошибки, которые «не выдаёт»: одна орфографическая ;), вторая программная — проверка строго завязана на регистр букв.

vadjliss 31-12-2016 09:46 2699806

Москва в кавычки брал тогда вообще не видит
тогда как

Iska 31-12-2016 09:54 2699807

Цитата:

Цитата vadjliss
Москва в кавычки брал »

Покажите Ваши кавычки, а лучше весь код.

vadjliss 31-12-2016 09:58 2699808

Код:

Do
a = inputbox("Столица нашей России")
if a = "Москва" then
msgbox "Да это правильный ответ"
Exit do
Else
msgbox "Нет не правильно"
End if
Loop


Iska 31-12-2016 11:09 2699817

Ну, и? Всё нормально (если забыть про регистр):

Что не так?!

В какой кодировке сохраняете скрипт?

vadjliss 31-12-2016 11:27 2699820

да кодировка сбилась ёпть

Iska 31-12-2016 12:25 2699829

Цитата:

Цитата vadjliss
да кодировка сбилась ёпть »

Поправили — заработало? Тогда ещё можете исправить сравнение на такое:
Код:

If StrComp(a, "Москва", vbTextCompare) = 0 Then
дабы не влиял регистр букв.


Время: 22:32.

Время: 22:32.
© OSzone.net 2001-