Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/103: Рейтинг темы: голосов - 103, средняя оценка - 4.67
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127

Диалоговое окно выбора папки

24.05.2015, 21:48. Показов 23778. Ответов 73
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!

Подскажите, пожалуйста, как открыть вот такое окно через cmd?
Ищу способы именно через сторонние программы, не скрипты JS и VBS.
Миниатюры
Диалоговое окно выбора папки  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2015, 21:48
Ответы с готовыми решениями:

Как через командную строку открыть диалоговое окно "Свойства" для файла или папки?
Здравствуйте, подскажите как через командную строку открыть диалоговое окно "Свойства" для файла или папки(как на скриншоте)....

Организовать ввод текста. По нажатию Enter показать диалоговое окно с введенным текстом
помогите.плиз Организовать ввод текста. По нажатию Enter показать диалоговое окно с введенным текстом

Как скрыть дополнительно диалоговое окно в бат файле при работе с bitsadmin
Необходимо раскатить ПО через Bitsadmin, на Пк запускаю скачивание через в планировщике в котором выполняется скрипт скрывающий работу бат...

73
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
31.08.2015, 20:46
Студворк — интернет-сервис помощи студентам
lorents,
Решил тот маленький нюанс с пользовательскими размерами. Теперь поведение программы не отличается от обычного системного диалога - и она (в отличие от NET класса FolderBrowserDialog) поддерживает все (или почти все) важные флаги и опции системной функции SHBrowseForFolder.
FolderDialogEx, ver. 1.0.0.0: (C) Garry Galler, 2015
(Так как прога написана практически заново, то уже новая программа :-))
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
FolderDialogEx, ver. 1.0.0.0: (C) Garry Galler, 2015
Отображает диалог выбора папок.
 
FolderDialogEx [/title:<заголовок>] [/desc:<описание>] [/path:<путь>] [/new] [/hide] [/block]
 [/coord:<координаты> [/offset:<смещение>] [/size:<размеры>] [/top:<top|topmost|notopmost|bottom>]
 [/ret:<значение возврата>] [/quotes:<кавычки>] [/backslash] [/expand:<yes|no>] [/validate:<yes|no>]
 [/edit:<yes|no>] [/files:<yes|no>] [/shares:<yes|no>] [/zip:<yes|no>] [/urls:<yes|no>] [/link:<yes|no>]
 [/computers:<yes|no>] [/printers:<yes|no>] [/fsancestors:<yes|no>] [/nodomain:<yes|no>] [/?]
 
 Example: FolderDialogEx /p:c:\windows /new:no /size:400:400 /offset:100x50 /d:"Мой диалог" /b
 Example: FolderDialogEx /title:"Мой выбор папок" /p:c:\ /d:"Мой диалог" /q
 Example: FolderDialogEx /root:appdata /p:"%AppData%\Adobe"
 Example: FolderDialogEx /root:programfiles /p:"C:\Program Files\Google"
 
 /title:         Указывает заголовок диалога. По умолчанию системное имя: Обзор папок.
 /d[esc]:        Указывает описание диалога. По умолчанию отсутствует.
 /p[ath]:        Указывает директорию инициализации диалога. По умолчанию - Мой компьютер.
 /root:          Указывает корневую директорию диалога. По умолчанию - Мой компьютер.
                 Поддерживаются следующие значения:
                 desktop, computer, appdata, localappdata, documents, programfiles, startmenu.
 /n[ew]          Указывает наличие кнопки создания новой папки. По умолчанию включено.
 /h[ide]         Указывает спрятать консоль на время отображения диалога.
 /b[lock]        Указывает заблокировать консоль на время отображения диалога.
 /c[oord]:       Координаты отображения диалога. Указываются как 100x100 или 50:50. 
 /o[ffset]:      Смещение относительно координат консоли. По умолчанию диалог центрируется
                 по осям X и Y относительно консоли.
 /s[ize]:        Новые размеры диалога. Указываются аналогично координатам.
 /t[op]          Поместить окно перед не самыми верхними окнами (HWND_TOPMOST). По умолчанию выключено.
 /r[et]:         Возвращаемое значение при отмене выбора пользователем. По умолчанию пустая строка.
 /q[uotes]       Включает добавление двойных кавычек к именам папок.
                 Тип кавычек можно указать после двоеточия. По умолчанию отключено.
 /expand[path]   Указывает раскрывать дерево папок по указанному в опциях пути. По умолчанию включено.
 /validate       Включает проверку правильности пути, указанному в EditBox. По умолчанию выключено.
 /edit[box]      Добавляет в диалог EditBox - поле редактирования. По умолчанию включено.
 /[get]link      Указывает возвращать пути до ярлыков, а не объектов указанных в них. По умолчанию выключено.
 /[browse]files  Разрешает отображать файлы. По умолчанию выключено.
 /[browse]urls   Разрешает отображать URLs. По умолчанию выключено.
 /[browse]zip    Разрешает отображать zip папки. По умолчанию выключено.
 /[browse]shares Разрешает отображать общие сетевые ресурсы. По умолчанию выключено.
 /[for]computers Разрешает только Обзор компьютеров. По умолчанию выключено.
 /[for]printers  Разрешает только Обзор принтеров. По умолчанию выключено.
 /fs[ancestors]  Возвращает только предков файловой системы. По умолчанию выключено.
 /nodomain       Исключает сетевые папки ниже уровня домена. По умолчанию выключено.
 /?              Справка по опциям командной строки.
 
 
Системные требования: .NET Framework 2.0.
NET класс FolderBrowserDialog был переписан почти с нуля, чтобы вернуть все возможности 
системного диалога SHBrowseForFolder.
Полная информация по всем флагам (ulFlags): https://msdn.microsoft.com/en-us/library/windows/desktop/bb773205(v=vs.85).aspx
PS: Не тестировалось на английской версии программы.
 
 
Поведение диалога:
1) Если задать параметр /coord:XxY (абсолютные экранные координаты по X\Y) - диалог будет перемещен по ним.
   Иначе будут использоваться значения параметра /offset.
2) Если задать параметр /offset::XxY (координаты смещения относительно окна консоли) - диалог будет перемещен по ним. 
   Параметр offset может быть отрицательным, но если будет указан offset уводящий диалог за границы экрана, 
   координата будет сброшена на 0 (левый край окна консоли).
   В отсутствии явно заданного параметра /offset (либо его значения) диалог центрируется относительно окна консоли.
3) Оба предыдущих параметра исключают друг друга.
 
4) Если задать параметр /size:WxH (ширина\высота) - диалог получит указанные размеры за исключением случаев:
   а) ширина или высота превышают клиентскую (минус панель задач) область экрана  -
      значения будут сброшены на дефолтные(или последние пользовательские).
   б) ширина или высота меньше чем 318x288 - это минимальные системно заданные размеры.
      Если указать меньше, то они будут проигнорированы и оставлены дефолтные(или последние пользовательские) 
      размеры для правильного центрирования.
 
5) Параметр /size имеет три строковых значения: 
   min     => 318x288
   max     => размеры экрана
   default => 334x326.  
 
6) Параметр /coord имеет одно строковое значение: default => отображение по центру экрана. 
 
7) При отмене пользователем выбора папки в консоль возвращается пустая строка. Используя параметр /ret вы можете задать свое значение возврата.
   Значение системной переменной %errorlrevel% меняется на -1.  
 
Значения, которые можно проверить через системную переменную %errorlrevel% :
-1 - Отмена выбора пользователем
 1 - Invalid option              (любая неправильная опция вызовет остановку программу и вывод в консоль этого сообщения)
 2 - Error parsing arguments     (ошибка при разборе аргументов - маловероятно, что возможна)
 3 - Console window is not found (очень странно будет, если она вообще когда-нибудь произойдет :-))
Прочие ошибки, не являющиеся фатальными (к примеру, MoveWindow), выводятся только при включенной опции /debug.
 
 
История версий:
    31/08/2015
    ***  Выпущена первая версия программы: FolderDialogEx v1.0.0.0.
 ---------------------------------------------------------------------------------------------

PS: Все опции не тестировал - некоторые самому непонятно как должны работать
2
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
31.08.2015, 21:01  [ТС]
Garry Galler, отличная работа!!!
0
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
31.08.2015, 23:35  [ТС]
Один момент нашел.

Допустим пользователь указал c:\windows, то FolderDialogEx, то данное папка выделена и видна.

Но если я указал C:\Windows\Downloaded Program Files, то уже папка не видна.
Миниатюры
Диалоговое окно выбора папки   Диалоговое окно выбора папки  
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.09.2015, 11:09
lorents,
Есть такое дело. Внутренний баг самой функции SHBrowseForFolder. Судя по тому, что я находил в инете - проявляется на win x64. Хотя и на моей 32-битной windows прокрутка - если папка ниже видимых границы диалога - тоже срабатывает не всегда. Обычно повторном вызове с той же папкой почему то все ОК. Но на 32-битной windows это лечится указанием root папки:
Code
1
2
FolderDialogEx /root:programfiles /p:"C:\Program Files\java" 
FolderDialogEx /root:programfiles /p:"C:\Program Files\windows NT"
- прокручивает всегда. На 64-битной не знаю - такое же поведение или нет. Вот только в качестве root можно задать только специальные имена папок (а не пути) и число этих спец. папок для совместимости с NET 2.0 очень небольшое.
PS: C этим багом я чуть позже собирался разбираться. Посмотрим - способы лечения вроде есть.
1
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
01.09.2015, 18:22  [ТС]
Garry Galler,
Подсказали вот такое решение SHBrowseForFolder function
https://msdn.microsoft.com/ru-... 2147217396
Но только оно на C++
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.09.2015, 18:30
lorents,
Насколько смог поправил (в примерах на других ЯП используют повторную отправку диалогу сообщения BFFM_SETSELECTIONW). Проверил на своей win 8 x64 - прокрутка в большинстве случаев срабатывает, хотя, на папке system32 (на win 7) в некоторых случаев была непонятная несработка.
Также добавил возможность указывать обычные пути в параметре /root.
PS: Выяснил одно интересное ограничения - автоматическое развертывание списка подпапок выделенной папки работает только, если число каталогов уровнем ниже не превышает 100. Причем попытка отправить диалогу повторное сообщение "развернуть" эффекта не имеет.

Добавлено через 2 минуты
Подсказали вот такое решение SHBrowseForFolder function
Так я именно WinAPI вариант и реализовывал. Как, впрочем и все те, кому не хватило стандартной реализации этого диалога в своем ЯП.
0
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
05.10.2015, 00:38  [ТС]
Garry Galler, думаю правильно будет добавить FolderDialogEx в раздел Полезные BAT/CMD скрипты - BAT

Еще раз, спасибо за проект!
0
 Аватар для volodin661
7160 / 2328 / 353
Регистрация: 10.12.2013
Сообщений: 8,058
06.10.2015, 14:27
я наверное потерял нить происходящего, но чем всё же стандартное/давно изобретенное,
не требующее составления документации кросс-платформенное(!) решение на Tk не угодило?

Вот например реализация Tcl/Tk
( под Windows вызов tk_getOpenFile дёрнет стандартный виндовый OpenFile диалог ):

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
set types {
    {{Text Files}       {.txt}        }
    {{TCL Scripts}      {.tcl}        }
    {{C Source Files}   {.c}      TEXT}
    {{GIF Files}        {.gif}        }
    {{GIF Files}        {}        GIFF}
    {{All Files}        *             }
}
set filename [tk_getOpenFile -filetypes $types]
 
if {$filename ne ""} {
    # Open the file ...
}
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.10.2015, 16:13
volodin661,
Ну во-первых, тогда уж не tk_getOpenFile, а tk_chooseDirectory.
А во-вторых - собрать автономный exe-шник на Tcl весьма проблематично. Я Tcl пробовал компилировать - ужасная дрянь этот tkwrap.exe - и библиотеки лишь выборочно поддерживает и собирает в километровый exe.
В том же AutoIT wrapper в 150 раз лучше врапперов Tcl\Perl\Python.
Ну и потом сколько параметров поддерживает tcl-ный диалог?
Code
1
2
3
4
-initialdir dirname
-mustexist boolean
-parent window
-title titleString
А сколько у WinAPI-шного SHBrowseForFolder? Дистанции огромного размера...
потерял нить происходящего
Тут задача стояла диалог отображать не абы где, а по нужным координатам.
Кросплатформенность идет лесом, ибо проект ТС под windows.
0
 Аватар для volodin661
7160 / 2328 / 353
Регистрация: 10.12.2013
Сообщений: 8,058
06.10.2015, 16:49
Garry Galler,

автономный, быстрый,
легко поддерживаемый(даже пьяной женщиной),
с координатами всяческих диалогов, позиции на экране которых можно править рукой
и не заморачиваясь установкой .Net, если таковая отсутствует и прочих вижуальных студий, ПРОЕКТ ??


Тогда я подкину дровишек в угасшую дискуссию и предложу Delphi6
0
06.10.2015, 17:05

Не по теме:

автономный, быстрый,легко поддерживаемый
Я уже объяснил почему он тут не в тему. Повторять не буду.
AutoIT - да, был бы супер в тему. Ибо автономный, быстрый,легко поддерживаемый. Но проект ТС изначально пошел на основе bat... И с этим ничего уже не поделаешь.
и предложу Delphi6
Без проблем. Только кто писать будет? Дядя Вася,Пушкин?... иных уж нет, а те далече:)
Человек попросил - я написал. Никто больше ничего не сделал, кроме возьми то, да возьми это.

0
06.10.2015, 17:21

Не по теме:

Цитата Сообщение от Garry Galler Посмотреть сообщение
Человек попросил - я написал. Никто больше ничего не сделал
ушёл закладывать тебе памятник.
( на первом этапе рукотворный )

попробую пробить в мэрии место возле триумфальной арки.

0
06.10.2015, 17:50

Не по теме:

... :senor:
Быть знаменитым некрасиво.
Не это подымает ввысь.
Не надо заводить архива,
Над рукописями трястись.
Цель творчества самоотдача,
А не шумиха, не успех.
Позорно ничего не знача,
Быть притчей на устах у всех.

0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
24.02.2022, 21:46
Всем здравствуйте

Пожалуйста, будьте так любезны, помогите собрать этот код

https://www.cyberforum.ru/post7665099.html

На выходе хочется так: выполняется строка

EXEC* --hide --wait TEnvi=%Curdir%\1.exe, то есть переменной TEnvi присвоится значение пути к папке, которое выберется в файле 1.exe

То есть если при запуске файла 1.exe выберется путь C:\Привет тест\Проверка, то TEnvi присвоится значение C:\Привет тест\Проверка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2022, 21:46

Диалоговое окно для выбора папки
Необходимо диалоговое окно для выбора не файла, а папки Добавлено через 9 минут Нашёл: FolderBrowserDialog

Открыть диалоговое окно выбора папки
Подскажите как сделать диалоговое окно выбора папки с файлами что бы в текстбоксе был виден путь до папки а в листбоксе открылся список...

Диалоговое окно для выбора папок с указанием папки
Подскажите, как указать папку при открытии диалогового? вариант (strFolderPath = Browse4Folder(strPrompt, intOptions,...

Диалоговое окно выбора как папки так и файлов
Можно ли обыграть ситуацию с диалоговыми окнами: Application.FileDialog(msoFileDialogFilePicker) - выбор файла(-ов) ...

Диалоговое окно выбора сервера бд
Здравствуйте. Как программно вызвать такое окно? Нашел статью на хабре: http://habrahabr.ru/post/167067/ Но она старая. Исходники и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
74
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru