Войти

Показать полную графическую версию : Winnity — диалог выбора папки или файла из командой строки


Страниц : [1] 2

hb860
07-01-2012, 23:42
Winnity — консольное приложение, показывающее диалог выбора папки или файла, которое можно использовать в командных файлах.

Предположим, командный файл принимает в качестве параметра запуска папку. Привертев к нему Winnity, можно запускать такой командный файл просто щелчком мыши, выбрать папку и дождаться завершения его работы.
Пример выбора папки
for /F "delims=" %%i in ('winnity /d') do (
dir %%i )
Пример выбора файла
for /F "delims=" %%i in ('winnity /f') do (
notepad.exe %%i )


for /F "delims=" %%i in ('winnity /d') do (set x=%%i )
echo %x%


Домашняя страница winnity (http://winreview.ru/winnity-dialog-vybora-papki-ili-fajla-iz-komandoj-stroki/)

Anonymоus
08-01-2012, 00:00
У вас ссылка битая, лишний httр httр://http//winreview.ru/winnity-dia...

Anonymоus
08-01-2012, 02:16
Сразу пустил winnity в дело - пристроил к скрипту, применяющему патчи к одной известной игре. Хотелось бы немного расширить функционал, а именно:

Добавить ключ, который бы разрешал множественный выбор файлов в диалоге, через зажатый ctrl, shift или выделением рамкой
Добавить маски файлов, к примеру, показывать и разрешать выбирать только zip файлы (естественно, хорошо бы и возможность за раз указать несколько масок для нескольких типов файлов)

hb860
08-01-2012, 13:52
Это несложно.
Вопрос только, в каком виде задавать эти параметры?
Через ини-файл или через опции командной строки?

Anonymоus
08-01-2012, 14:09
Лучше бы конечно через опции. Например, выбор одиночного файла /F:single, выбор нескольких /F:multi. Маски - работают только при диалоге выбора файла, для директорий это ни к чему. Например, /M "zip rar 7z"

hb860
10-01-2012, 21:52
Прямо щас напишу

hb860
11-01-2012, 00:25
Готово
Забирать там же
Usage:
winnity /d - select directory dialog
winnity /f - open file dialog
winnity /f /m - open file dialog (multi select)
winnity /f /e=*.exe - open file dialog with filter by exe extension
winnity /f "/e=*.exe *.dll *.*" - open file dialog with exe,dll and all files extensions filter

Sergey Tkachenko, http://winreview.ru

Тоже работает:
winnity /f /m /e=*.exe

Anonymоus
11-01-2012, 03:19
Благодарю за изменения, сейчас перекачаю новую версию.
UPD: Скачал, протестировал. Выбор директории работает отлично, как и в предыдущей версии. А вот с файлами что-то не так. При запуске просто с ключом /f, без /e или /m - не выводит выбранный файл, просто не пишет ничего в stdout. При запуске /f /m - дает выбрать несколько файлов, но по прежнему не выводит результата. При запуске с /f /e=*.cab фильтр не применяется, видны файлы с любыми расширениями, соответственно, можно выбрать не подходящий под фильтр. И снова не выводит результат.
ОС - Win XP SP3.
Запускал такой строкой: For /F "tokens=*" %%I In ('winnity /f') Do (Echo "%%I")

hb860
11-01-2012, 08:24
А вот с файлами что-то не так. »
Есть такое. Исправил, перекачиваем.

При запуске с /f /e=*.cab фильтр не применяется »
Потому что в FOR надо писать так:
For /F "tokens=*" %%I In ('winnity /f "/e=*.cab"') Do (Echo "%%I")
Кавычки нужны, а то звёздочка команду смущает

Iska
11-01-2012, 20:55
Вещь полезная в плане того, что после XP выкинули потребные библиотеки, а «comdlg32.ocx» требует лицензирования (хотя и есть и вполне легальный способ его задействовать). Спасибо.

winnity /f "/e=*.exe *.dll *.*" - open file dialog with exe,dll and all files extensions filter »
Отчего синтаксис не стандартный:
winnity /f /e="*.exe *.dll *.*"
или даже:
winnity /f /e:"*.exe *.dll *.*"
?

hb860, можете там же реализовать и поддержку GetSaveFileName (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646928(v=vs.85).aspx)? Иногда бывает нужно и такое.

Также, возможно, стоит дать возможность задавать текст заголовка диалогового окна.


2All: Вопрос — у меня под XP окно «Open File» отображается под окном командной строки/запущенного пакетного файла. У кого-либо наблюдается подобное?

ferget
11-01-2012, 21:38
Вещь полезная в плане того, что после XP выкинули потребные библиотеки, а «comdlg32.ocx» требует лицензирования »

вот об этом по подробнее, пожалуйста

Anonymоus
11-01-2012, 21:52
Iska, нет, не наблюдается, открывается прямо поверх окна командной строки, перехватывая фокус на себя, если из батника вызывать - то же самое.
http://rghost.ru/35857426/image.png

Iska
11-01-2012, 23:40
ferget, hta-редактор «Simple HTML editor» из комплектов Visual Studio, Microsoft Platform SDK, либо оффлайновых версий MSDN (я случайно наткнулся и использовал именно последний вариант). Подробности обсуждения изложены в этой теме: VBS: диалоговое окно выбора файла в windows vista & 7 (http://forum.script-coding.com/viewtopic.php?id=3969).

Впрочем, позже, после уточнения коллеги wisgest, у меня заработал и предложенный AnvarovSR и адаптированный smaharbA вариант: VBS диалог открытия файла не работает на Windows 7 (http://forum.script-coding.com/viewtopic.php?id=6192).


Anonymоus, спасибо, ясно. Значит именно мне так «везёт».

hb860
28-01-2012, 23:21
Отчего синтаксис не стандартный: »
Стандратное поведение Delphi. Велик с квадратными колёсами решил не делать, воспользовался готовым.

hb860, можете там же реализовать и поддержку GetSaveFileName? Иногда бывает нужно и такое.
Также, возможно, стоит дать возможность задавать текст заголовка диалогового окна. »
Я подумаю над этим.
А в каком сценарии предполагается использование GetSaveFileName?

Iska
29-01-2012, 03:44
Стандратное поведение Delphi. Велик с квадратными колёсами решил не делать, воспользовался готовым. »
Ясно. Тогда, действительно, не стоит.

А в каком сценарии предполагается использование GetSaveFileName? »
Конкретное использование — например, чтобы задать имя файла для вывода. Как-то так:
for /f "delims=" %%i in ('winnity /s') do (
if not defined sFileOut set sFileOut=%%~i
)

>>"%sFileOut%" echo 1. bla-bla-bla
>>"%sFileOut%" echo 2. bla-bla-bla



Кому? Для тех же самых людей, которые не пользуются сторонними файловыми менеджерами, чтобы, например, просто подставить полный путь к файлу параметром пакетного файла, и не любят набирать его вручную в командной строке или, например, в ответ на запрос «set /p».

P.S. Поправьте, пожалуйста, заголовок темы: «…из командной строки».

ferget
29-01-2012, 05:13
диалоги xp'шные, а у меня 7

hb860
30-01-2012, 10:07
ferget, ага. В 5ой делфе старое апи обёрнуто.
Iska, я попробую привернуть TSaveDialog.

lorents
02-02-2012, 11:43
Добрый день!
Хотел поблагодарить на проект, действительнр нужная вешь. Так же хотел попросить сделать следующие изменеия:
1. изменить диалоговое окно выбора файлов на на более стандартное
2. когда запускаю программу, то ее значек отображется в панели пуск, рекомендую скрыть значек
3. добавить возможность изменять заголовок окна
4. расширенный набор работы со строкой тип файла. Например, в строке типа файлов указываю "Все поддерживаемые форматы" а это файлы (*.png, *.jpg)

lorents
08-02-2012, 21:51
hb860 не могли бы сделать эти изменения

1. изменить диалоговое окно выбора файлов на на более стандартное »

предлагая изменить на такое диалоговое окно

http://habrastorage.org/storage2/af8/1c5/0b8/af81c50b85b6df25e7fdf9a170fc310d.png

2. когда запускаю программу, то ее значок отображается в панели пуск, рекомендую скрыть значок »

http://habrastorage.org/storage2/77d/999/08a/77d99908a4f716bffb79253462076ee5.png

3. добавить возможность изменять заголовок окна
4. расширенный набор работы со строкой тип файла. Например, в строке типа файлов указываю "Все поддерживаемые форматы" а это файлы (*.png, *.jpg) »

5. диалоговое окно было поверх окна cmd
6. диалоговые окна на подобии Wprompt (http://www.horstmuc.de/wcon.htm)

http://www.dmcinfo.com/Portals/0/Blog%20Pictures/Asynchronous-Message-Box.png

hb860
06-04-2012, 10:08
Мог бы. Времени только не хватает, поэтому вообще ничего не делал :(




© OSzone.net 2001-2012