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

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

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

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

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

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

Как пользоваться Winnity

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

[code]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%[/code]

Программа "понимает" такие ключи командной строки

winnity /d - вызов окна выбора директории

 

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

Обновлено 11.01.2012:

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

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

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

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

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

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

Скачать winnity:

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

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

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

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

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

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

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

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

  7. Здравствуйте!
    Нет ли простой возможности подать на вход этой утилите путь.
    А она раскрыла бы дерево папок и остановилась именно на этом пути?

  8. 1. Поддерживаю: «подать на вход этой утилите путь»
    2. Добавить ключ /t «Заголовок окна», дабы как-то подсказать юзеру, чего от него хотят.

  9. Все вроде бы хорошо, но что-то не хорошо.
    У меня у одного пропадает масштабирование диалога, если использовать параметры /f /m?
    Сергей, большая просьба — поправьте, если будет время и желание. Ну а если нет — то напишите, чтобы не ждать.

    1. Поправлю, как только руки дойдут.
      Программа давно «кирпича просит» 🙂

  10. Спасибо за ответ. Еще вопрос — как в батнике организовать выход, если диалог вызван с ключом /m
    и пользователь нажал «Отмена»:
    for /f «delims=» %%i in (‘winnity.exe /f /m «/e=*.%appj%»‘) do (
    set «result=%%~i»

    )
    Я к чему — сделайте еще код возврата на «Отмену»
    Заранее благодарен.

    1. Если пользователь нажал отмену — %%i будет пустой строкой
      if -%%i==- echo Нажата отмена
      Спасибо за пожелания, учту при реализации новой версии.

  11. Вам спасибо, буду ждать.
    Еще пожелание (уже писали) — параметром сделайте начальный каталог. Пожалуй все.
    Еще раз спасибо.

  12. Добрый день.

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

Обсуждение закрыто.