Показать полную графическую версию : Winnity — диалог выбора папки или файла из командой строки
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 файлы (естественно, хорошо бы и возможность за раз указать несколько масок для нескольких типов файлов)
Это несложно.
Вопрос только, в каком виде задавать эти параметры?
Через ини-файл или через опции командной строки?
Anonymоus
08-01-2012, 14:09
Лучше бы конечно через опции. Например, выбор одиночного файла /F:single, выбор нескольких /F:multi. Маски - работают только при диалоге выбора файла, для директорий это ни к чему. Например, /M "zip rar 7z"
Готово
Забирать там же
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")
А вот с файлами что-то не так. »
Есть такое. Исправил, перекачиваем.
При запуске с /f /e=*.cab фильтр не применяется »
Потому что в FOR надо писать так:
For /F "tokens=*" %%I In ('winnity /f "/e=*.cab"') Do (Echo "%%I")
Кавычки нужны, а то звёздочка команду смущает
Вещь полезная в плане того, что после 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» отображается под окном командной строки/запущенного пакетного файла. У кого-либо наблюдается подобное?
Вещь полезная в плане того, что после XP выкинули потребные библиотеки, а «comdlg32.ocx» требует лицензирования »
вот об этом по подробнее, пожалуйста
Anonymоus
11-01-2012, 21:52
Iska, нет, не наблюдается, открывается прямо поверх окна командной строки, перехватывая фокус на себя, если из батника вызывать - то же самое.
http://rghost.ru/35857426/image.png
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, спасибо, ясно. Значит именно мне так «везёт».
Отчего синтаксис не стандартный: »
Стандратное поведение Delphi. Велик с квадратными колёсами решил не делать, воспользовался готовым.
hb860, можете там же реализовать и поддержку GetSaveFileName? Иногда бывает нужно и такое.
Также, возможно, стоит дать возможность задавать текст заголовка диалогового окна. »
Я подумаю над этим.
А в каком сценарии предполагается использование GetSaveFileName?
Стандратное поведение 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. Поправьте, пожалуйста, заголовок темы: «…из командной строки».
диалоги xp'шные, а у меня 7
ferget, ага. В 5ой делфе старое апи обёрнуто.
Iska, я попробую привернуть TSaveDialog.
Добрый день!
Хотел поблагодарить на проект, действительнр нужная вешь. Так же хотел попросить сделать следующие изменеия:
1. изменить диалоговое окно выбора файлов на на более стандартное
2. когда запускаю программу, то ее значек отображется в панели пуск, рекомендую скрыть значек
3. добавить возможность изменять заголовок окна
4. расширенный набор работы со строкой тип файла. Например, в строке типа файлов указываю "Все поддерживаемые форматы" а это файлы (*.png, *.jpg)
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
Мог бы. Времени только не хватает, поэтому вообще ничего не делал :(
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.