Главная > Программы, Уголок гика > Winnity — диалог выбора папки или файла из командой строки

Winnity — диалог выбора папки или файла из командой строки

Я никогда не был гуру программирования, скриптования или каким-то подобным "гурой", но подчас написанные несколько строк скрипта сильно экономят время в дальнейшем. Поэтому я частенько пишу простенькие BASH - скрипты в линуксе.

Признаюсь честно, я невероятно ленивый человек, и стараюсь совершать как можно меньше телодвижений. И поэтому я снабдил все BASH-скрипты, принимающие к качестве параметров командой строки путь к папке/файлу, графическим диалогом выбора.

Сегодня я писал что-то похожее на командных файлах Windows, и чётко осознал, что не хочу вызывать cmd-файл  с параметрами, вставляя путь к папке вручную. Немного поразмыслив, я быстро набросал winnity.

Winnity - это трёхсоткилобайтное консольное приложение, написаное на Delphi 5 (посему не требующее этих ваших .NET framework и работающее в системах начиная с Windows 2000 и выше) .

Его основное назначение - выводить диалог выбора папки или файла. Всё, что выбрал пользователь, выводится в командную строку. Если пользователь нажал отмену - программа выводит пустую строку.

Как пользоваться 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 /d - вызов окна выбора директории

 

winnity /f - вызов окна выбора файла

Обновлено 11.01.2012:

Следующие два ключа добавлены по просьбе участников сообщества Oszone и работают только в режиме "файлового" диалога:

winnity /f /m - разрешить выбирать несколько файлов в диалоге открытия файла.

winnity /f  "/e=*.jpg *.bmp" - использовать фильтр по типам файлов. В данном случае, по JPG и BMP.

Ключ /m совместим с ключом /e. При вызове утилиты в команде FOR необходимо всегда заключать ключ /e в кавычки:

for /F "delims=" %%i in ('winnity /f  "/e=*.txt"') do (
notepad.exe %%i )

Таким образом, если вам потребуется часто вызывать командный файл, который требует в качестве параметров пути/имена файлов, вы можете добавить в него вызов winnity и сэкономить себе немного времени.

Скачать winnity:

Winreview.ru можно найти в Вконтакте, Facebook и Twitter. Присоединяйтесь!

Комментарии

  1. Roman

    сэкономить себе немного времени
    !

    Мне эта утилитка съэкономит массу времени! Огромное спасибо!

  2. Сергей Ткаченко

    Да всегда пожалуйста.

  3. Inquisitor

    Большое спасибо, в сочетании с WBAT эта утилита позволит организовать отличный пользовательский интерфейс для более-менее сложных скриптов, для меня очень полезно.

  4. Inquisitor

    Сергей, поправьте пожалуйста ссылку на эту страницу в вашем посте на OSzone - она немного битая.

  5. Сергей Ткаченко

    @Inquisitor
    Спасибо, поправил

  6. bURov

    Inquisitor

    в сочетании с WBAT

    А что это такое -- WBAT?

  7. bURov

    Вот бы еще историю выбранных папок и файлов запоминала...

  8. бУРов

    Возвращает ли программа какие-то коды, если нажата "Отмена" или "ОК"?

  9. Сергей Ткаченко

    @бУРов
    Нет

  10. bURov

    Спасибо за ответ, я обошелся без кодов возврата вполне.

  11. бУРов

    Здравствуйте!

    Нет ли простой возможности подать на вход этой утилите путь.

    А она раскрыла бы дерево папок и остановилась именно на этом пути?

  12. Сергей Ткаченко

    @бУРов
    Писать надо

  13. Владимир

    1. Поддерживаю "подать на вход этой утилите путь"

    2. Добавить ключ /t "Заголовок окна", дабы как-то подсказать юзеру, чего от него хотят.

  14. Max

    Все вроде бы хорошо, но что-то не хорошо.

    У меня у одного пропадает масштабирование диалога, если использовать параметры /f /m?

    Сергей, большая просьба - поправьте, если будет время и желание. Ну а если нет - то напишите, чтобы не ждать.

  15. Сергей Ткаченко

    @Max
    Поправлю, как только руки дойдут.

    Программа давно "кирпича просит" )

  16. Max

    Спасибо за ответ. Еще вопрос - как в батнике организовать выход, если диалог вызван с ключом /m

    и пользователь нажал "Отмена"

    for /f "delims=" %%i in ('winnity.exe /f /m "/e=*.%appj%"') do (

    set "result=%%~i"

    )

    Я к чему - сделайте еще код возврата на "Отмену"

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

  17. Сергей Ткаченко

    @Max
    Если пользователь нажал отмену - %%i будет пустой строкой

    if -%%i==- echo Нажата отмена

    Спасибо за пожелания, учту при реализации новой версии.

  18. Max

    Вам спасибо, буду ждать.

    Еще пожелание (уже писали) - параметром сделайте начальный каталог. Пожалуй все.

    Еще раз спасибо.

  19. Олег

    Добрый день.

    А возможно сделать, чтоб программка выбирала уже прописанный путь сама - например - D;\arxiv ?

Написать комментарий