Показать полную графическую версию : [решено] Окно для выбора файла.
angel_lyucifer
13-12-2016, 02:32
Привет всем, нужна ваша помощь....
Нужен скрипт который бы открывал окно для выбора файла При выборе файла скрипт должен сохранить текущий путь в текстовый файл. Я вам ниже дал скрипт, который должен открывать окно для выбора файла, но он выдаёт ошибку(не работает). Помогите переделать скрипт.
Заранее благодарю.
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
но он выдаёт ошибку »
Какую?
В каком окружении исполняется скрипт?
angel_lyucifer
14-12-2016, 00:09
В каком окружении исполняется скрипт? »
Поясните пожалуйста что это такое? Ошибка на скрине...
Мне нужен скрипт типа обзора файлов. Скрипт будет запускаться bat-ником. После этого должно открыться стандартное окно поиска файлов для rar-архивов. После выбора файла окно закрывается и рядом со скриптом генерируется текстовый файл, в котором сохраняется полный путь к указанному файлу.
Ошибка на скрине... »
Можно было просто нажать Ctrl-C в этом диалоге.
Поясните пожалуйста что это такое? »
Ровно то, что написано. Невозможно создать объект указаного класса, потому как либо не зарегистрирована библиотека COMDLG32.OCX, либо вообще отсутствует (в скобках отмечу, что она к тому же требует и лицензирования).
Мне нужен скрипт типа обзора файлов. »
Можете попробовать рецепты отсюда: VBScript: вызов интерактивного диалога открытия файла — Windows Script Host, HTA (VBScript, JScript) — Коллекция скриптов и идей — Серый форум (http://forum.script-coding.com/viewtopic.php?pid=6509).
angel_lyucifer
14-12-2016, 02:30
Можете попробовать рецепты отсюда: 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
angel_lyucifer, либо заполняйте свою конфигурацию, либо указывайте условия исполнения, в данном случае — ОС. «UserAccounts.CommonDialog» и «SAFRCFileDlg.FileOpen» — основаны на библиотеках, идущих в комплекте с Windows XP.
Petya V4sechkin
14-12-2016, 08:52
angel_lyucifer, ещё варианты VBScript File Browser (https://gist.github.com/mlhaufe/1034241).
angel_lyucifer
15-12-2016, 01:42
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
почему не подходит 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
}
Зайдите на 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
ребята выдаёт ошибку помогите
Do
a = inputbox("Столица нашей России")
if a = Москва then
msgbox "Да это правильный ответ"
Exit do
Else
msgbox "Нет не правильно"
End if
Loop
vadjliss, для оформления кода используйте тэг [code] (http://forum.oszone.net/misc.php?do=bbcode#code).
выдаёт ошибку »
Слово «Москва» возьмите в кавычки.
Кроме того, у Вас там ещё две ошибки, которые «не выдаёт»: одна орфографическая ;), вторая программная — проверка строго завязана на регистр букв.
vadjliss
31-12-2016, 09:46
Москва в кавычки брал тогда вообще не видит
тогда как
Москва в кавычки брал »
Покажите Ваши кавычки, а лучше весь код.
vadjliss
31-12-2016, 09:58
Do
a = inputbox("Столица нашей России")
if a = "Москва" then
msgbox "Да это правильный ответ"
Exit do
Else
msgbox "Нет не правильно"
End if
Loop
Ну, и? Всё нормально (если забыть про регистр):
http://i.imgur.com/FxWZzFT.png
Что не так?!
В какой кодировке сохраняете скрипт?
vadjliss
31-12-2016, 11:27
да кодировка сбилась ёпть
да кодировка сбилась ёпть »
Поправили — заработало? Тогда ещё можете исправить сравнение на такое:
If StrComp(a, "Москва", vbTextCompare) = 0 Then
дабы не влиял регистр букв.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.