Я никогда не был гуру программирования, скриптования или каким-то подобным "гурой", но подчас написанные несколько строк скрипта сильно экономят время в дальнейшем. Поэтому я частенько пишу простенькие 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
💡Узнавайте о новых статьях быстрее. Подпишитесь на наши каналы в Telegram и Twitter.
!
Мне эта утилитка съэкономит массу времени! Огромное спасибо!
Да всегда пожалуйста.
Большое спасибо, в сочетании с WBAT эта утилита позволит организовать отличный пользовательский интерфейс для более-менее сложных скриптов, для меня очень полезно.
Сергей, поправьте пожалуйста ссылку на эту страницу в вашем посте на OSzone — она немного битая.
Спасибо, поправил
А что это такое — WBAT?
Вот бы еще историю выбранных папок и файлов запоминала…
Возвращает ли программа какие-то коды, если нажата «Отмена» или «ОК»?
Нет
Спасибо за ответ, я обошелся без кодов возврата вполне.
Здравствуйте!
Нет ли простой возможности подать на вход этой утилите путь.
А она раскрыла бы дерево папок и остановилась именно на этом пути?
Писать надо
1. Поддерживаю: «подать на вход этой утилите путь»
2. Добавить ключ /t «Заголовок окна», дабы как-то подсказать юзеру, чего от него хотят.
Все вроде бы хорошо, но что-то не хорошо.
У меня у одного пропадает масштабирование диалога, если использовать параметры /f /m?
Сергей, большая просьба — поправьте, если будет время и желание. Ну а если нет — то напишите, чтобы не ждать.
Поправлю, как только руки дойдут.
Программа давно «кирпича просит» 🙂
Спасибо за ответ. Еще вопрос — как в батнике организовать выход, если диалог вызван с ключом /m
и пользователь нажал «Отмена»:
for /f «delims=» %%i in (‘winnity.exe /f /m «/e=*.%appj%»‘) do (
set «result=%%~i»
)
Я к чему — сделайте еще код возврата на «Отмену»
Заранее благодарен.
Если пользователь нажал отмену — %%i будет пустой строкой
if -%%i==- echo Нажата отмена
Спасибо за пожелания, учту при реализации новой версии.
Вам спасибо, буду ждать.
Еще пожелание (уже писали) — параметром сделайте начальный каталог. Пожалуй все.
Еще раз спасибо.
Добрый день.
А возможно сделать, чтоб программка выбирала уже прописанный путь сама — например — D;\arxiv ?