Форум программистов, компьютерный форум, киберфорум
nekit270
Войти
Регистрация
Восстановить пароль
Добро пожаловать, здесь я программирую бессмысленно и беспощадно
Старый
Рейтинг: 2.86. Голосов: 7.
Импорт библиотек в BAT-файлах
Запись от nekit270 размещена 15.01.2024 в 01:43
Показов 1534 Комментарии 0

Продолжаю предложенную sqltd1 рубрику под названием "психоделическое программирование". Сегодня я подумал - вот в Python есть import, в C и C++ #include, в Node.JS - require. И так далее - почти во всех ЯП есть возможность подключить в свой код внешний файл и использовать функции и переменные оттуда.

Но что в Batch?
А в Batch - как обычно, на первый взгляд ничего, но дело в том, что есть у него одна особенность - код bat-файлов можно редактировать во время выполнения.

Убедиться в этом нетрудно - просто создайте...
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 2.33. Голосов: 6.
Создание Telegram-бота с помощью BAT-файлов
Запись от nekit270 размещена 07.01.2024 в 04:46
Показов 1907 Комментарии 3
Метки bat, cmd, telegram, windows, бот

Не так давно на данном форуме я увидел мнение, что язык BAT-файлов ни к чему не приспособлен. Отчасти это так, но почему бы не приспособить его к такой задаче, как создание Telegram-ботов?

В целом, бот для Telegram состоит из цикла обработки обновлений, в котором бот реагирует на обновления, полученные методом getUpdates (да, есть вебхуки, но их я рассматривать не стал из-за его сложности в реализации).

При разработке бота необходимо иметь:
  • Инструмент для выполнения HTTP-запросов к серверу API Telegram
  • Парсер JSON для обработки ответов от API

И если...
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 2.29. Голосов: 7.
Просмотрщик изображений в командной строке
Запись от nekit270 размещена 29.12.2023 в 12:22
Показов 2327 Комментарии 6

Нет, не изображений, составленных из символов, а самых обычных, в нормальном качестве.

Как? WinAPI может многое, и если вам кажется, что что-либо невозможно, скорее всего оно станет возможным, как только вы отбросите один или несколько слоев абстракций.
Зачем? Просто так. Возможно, кто-то найдет этому применение.

Поддерживаются форматы BMP, JPG, PNG, GIF и TIFF, поэтому просмотрщик без особых проблем справится с большинством изображений (если вы, конечно, не ярый фанат WEBP и не держите у себя только его).

Как это устроено:
  1. Вызовом GetConsoleWindow
...
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 268
Размер:	566.4 Кб
ID:	8438  
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 2.00. Голосов: 5.
3 способа запустить что-либо тогда, когда не надо
Запись от nekit270 размещена 19.12.2023 в 14:13
Показов 1405 Комментарии 0

Собственно, зачем нужно запускать что-либо тогда, когда юзер этого не хочет? Тут есть два варианта: либо ради безопасности компьютера/сети/психики детей (нужное подчеркнуть), либо тот вариант, "который приличные люди не называют", а я назову, ведь после использования eval для реализации лямбд в (почти) всеми нами любимом питончике, меня навряд ли можно считать приличным человеком. И этот вариант - вирусописательство, что я конечно же осуждаю, но инструкции и код все равно оставлю

Итак, теперь кран с водой можно закрывать и переходить к делу.

1. Вместо...
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 1.00. Голосов: 2.
Чтение из XLSX-файла с помощью Python
Запись от nekit270 размещена 11.12.2023 в 02:42
Показов 1511 Комментарии 0
Метки excel, python, xlsx

Вдохновившись этой статейкой от sqltd1, решил написать на питончике скрипт для чтения данных из ячейки XLSX-файла.

Но не просто написать скрипт, а сделать это без внешних библиотек и всего прочего.


Формат XLSX

XLSX представляет собой zip-архив. Для извлечения значений нужны два файла из него:
/xl/worksheets/<лист>.xml - собственно лист
/xl/sharedStrings.xml - строки


Извлечение значений

Для распаковки использую модуль zipfile, а в качестве простенького XML-парсера...
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок экрана 2023-12-11 022747.png
Просмотров: 147
Размер:	8.6 Кб
ID:	8395  
Вложения
Тип файла: xlsx test.xlsx (7.9 Кб, 169 просмотров)
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 3.00. Голосов: 4.
"Многостроч­ные" лямбды в Python
Запись от nekit270 размещена 09.12.2023 в 02:36
Показов 1970 Комментарии 4
Метки lambda, python

Лямбда-функции в Python имеют ряд ограничений:
  • Только одна строка (точнее, одна команда) в теле функции
  • Нельзя присваивать значение переменным или атрибутам объектов

Но эти ограничения можно обойти!

Сразу дам ответ на вопрос "Зачем?" - просто так. Просто захотелось сделать возможным то, что разработчики языка в него не закладывали.

Для начала - ограничение на одну команду. Его легко обойти, используя eval() в связке с генератором списка. Из списка можно взять последний элемент, тогда...
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 3.00. Голосов: 4.
Утилита wlrmdr.exe
Запись от nekit270 размещена 06.12.2023 в 01:23
Показов 2637 Комментарии 0
Метки bat, cmd, windows, wlrmdr

В папке System32 скрывается на первый взгляд ничем не примечательный файл - wlrmdr.exe. Его описание - "Напоминание входа в Windows". Казалось бы, это просто один из множества системных исполняемых файлов, но это не так.
wlrmdr.exe поддерживает некоторые аргументы командной строки. Официальной документации к ним нет, а информация в интернете неполная и частично неверная.

Cинтаксис этой команды:
Windows Batch file
1
wlrmdr -s <Неизвестно1> -f <Иконка> -t <Заголовок> -m <Сообщение> -a <Неизвестно2> -u <Файл/URL>
Смысл -s...
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 1.00. Голосов: 2.
Полезные (и не очень) функции стандартных библиотек Windows
Запись от nekit270 размещена 31.10.2023 в 23:48
Показов 1155 Комментарии 0

Это - продолжение статьи о том, как вызывать функции из командной строки.

Прмечание: ссылка в названии функции ведет на ее документацию (официальную, если такая имеется).

Полезные функции

Эта часть будет посвящена функциям, которые имеют применение (в том числе для bat-файлов)
  1. MessageBoxA
    Вызов стандартного для Windows окна сообщения.

    Сигнатура:
    C++
    1
    2
    3
    4
    5
    
    int MessageBoxA(
      [in, optional] HWND   hWnd,
      [in, optional] LPCSTR lpText,
      [in, optional] LPCSTR lpCaption,
      [in]
...
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 3.00. Голосов: 4.
Вызов функций из DLL через командную строку
Запись от nekit270 размещена 30.10.2023 в 22:08
Показов 2689 Комментарии 2
Метки bat, cmd, dll, rundll32, rundll34, windows

Стандартные DLL винды (kernel32.dll, user32.dll, shell32.dll и другие) содержат огромное количество полезных (или просто интересных) функций.

В поставку винды входит замечательная утилита rundll32, которая открывает двери в мир WinAPI. Вернее, приоткрывает, потому что имеет она очень серьезный недостаток - она умеет вызывать функции только с определенной сигнатурой, а именно:
Код:
void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);
И третим аргументом (lpszCmdLine) в функцию передается...
Миниатюры
Нажмите на изображение для увеличения
Название: msgbox1.png
Просмотров: 164
Размер:	6.8 Кб
ID:	8341  
Изображения
 
Вложения
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 1.00. Голосов: 2.
ExBAT - расширенная версия Batch
Запись от nekit270 размещена 17.09.2023 в 23:35
Показов 1214 Комментарии 6
Метки bat, cmd, exbat, windows

Мне тут нечем заняться было, и я решил написать на C# расширение bat-языка, которое компилируется в обычный bat-файл.

1. Работа с компилятором

1.1. Компиляция
Код:
exbat.exe --compile source.exb output.bat
1.2. Запуск (компиляция во временный файл, его запуск и последующее удаление)
Код:
exbat.exe --run source.exb
2. Синтаксис ExBAT

2.1. Комментарии

В качестве символов начала комментария допустимы:
  • # (bash-style)
  • // (c-style)
  • :: и rem (из Batch)

Пример:
Windows Batch file
1
# Комментарий
...
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 2.33. Голосов: 3.
Как создавать функции (подпрограммы) в Batch
Запись от nekit270 размещена 15.09.2023 в 00:06
Показов 2147 Комментарии 1

Функции в Batch отсутствуют, но их можно создать "костыльным" методом - с помощью метки.

Пример:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
 
:: Вызов функции
call :my_function "argument 1" "argument 2"
 
:: Предотвращение исполнения кода функции без вызова
exit /b
 
:: Начало функции
:my_function
    echo Аргумент 1: %~1
    echo Аргумент 2: %~2
goto :eof
:: Конец функции
А теперь - объяснение работы данного кода.

Команда call при включенной...
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Старый
Рейтинг: 1.00. Голосов: 2.
Mshta как инструмент расширения возможностей Batch
Запись от nekit270 размещена 12.09.2023 в 22:50
Показов 3394 Комментарии 11
Метки bat, cmd, javascript, mshta

mshta.exe - встроенная программа Windows, предназначенная для запуска HTA-файлов (HTML Applications). Но еще ее можно использовать для расширения возможностей BAT-файлов.

1. Запуск HTA-файла

Чтобы запустить HTA-файл из батника или cmd, необходимо передать mshta.exe протокол "file://" и полный путь к файлу.
Windows Batch file
1
2
3
4
:: Пример 1: запуск файла по абсолютному (полному) путь
mshta "file://C:\Users\user\Documents\test.hta"
 
:: Пример 2: запуск файла из текущей
...
Аватар для nekit270
bat-пропагандист
Размещено в Без категории
nekit270 вне форума
Новые блоги и статьи
Интеграция Arduino и ChatGPT: Практическое руководство
InfoMaster 16.01.2025
В современную эпоху технологических инноваций интеграция искусственного интеллекта с микроконтроллерами открывает принципиально новые возможности для создания умных устройств и автоматизированных. . .
Как создать робота, управляемого ChatGPT
InfoMaster 16.01.2025
Концепция проекта В современную эпоху искусственный интеллект и робототехника становятся все более доступными для энтузиастов и разработчиков. Создание роботизированной руки, управляемой ChatGPT,. . .
Как создать ChatGPT бота в Telegram на Python
InfoMaster 16.01.2025
В современном мире технологии искусственного интеллекта становятся все более доступными для разработчиков, открывая новые возможности для создания умных и интерактивных приложений. Одним из самых. . .
Машинное обучение с помощью Python
InfoMaster 16.01.2025
Машинное обучение стало неотъемлемой частью современных технологий, позволяя компьютерам учиться на основе данных и принимать решения без явного программирования. В сочетании с языком. . .
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru