Bat комментарии: Как добавить комментарии в bat-файл

обсуждение и комментарии в Тинькофф Пульс

​​🚬 British American Tobacco $BTI — обзор табачной компании с огромными дивидендами
▫️Капитализация: 72,7 млрд (32,5$ / акция)
▫️Выручка 2022: $33,8 млрд
▫️Операционная прибыль 2022: $18,6 млрд
▫️Чистая прибыль 2022: $8,1 млрд
▫️P/E ТТМ: 9
▫️fwd P/E 2023: 10
▫️fwd дивиденд 2023: 8,5%
👉 British American Tobacco — это британская табачная компания, которая занимается производством и продажей сигарет, табака и других табачных изделий в более чем 180 странах мира. Компания владеет многими известными марками, такими как Dunhill, Kent, Lucky Strike, Pall Mall и Rothmans.
✅ Компания исторически платит достаточно высокие дивиденды, направляя на выплаты более 50% от чистой прибыли. Див. доходность TTM уже превышает 8% что очень много для американского рынка.
✅ В Калифорнии был введен полный запрет на продажу сигарет с ментолом и сейчас обсуждается принятие аналогичного решения на федеральном уровне. Однако негативный эффект оказался минимальным: по данным менеджмента почти 95% потребителей в итоге перешли на другой вид сигарет BAT.
❌ Чистый долг у BAT довольно высокий: ND/EBITDA = 2,9 при целевых 2,5. Основная часть погашений приходится на 2023-2025гг и перезанимать придётся под более высокий %.
❌ Менеджмент BAT принял решение о продаже своего бизнеса в РФ, который занимал около 3% в выручке компании на 2021г. Для этого компания уже списала $675 млн активов. Полный выход ожидается ближе к концу 2023г.
❌ Продажи на мировом рынке сигарет продолжают падать и по прогнозу самих табачных компаний (Phillip Morris, BAT и т.д.) этот тренд устойчивый. Для BAT продажа сигарет — это само собой основной бизнес, а значит драйвером его роста может быть только повышение цен на продукцию. Впрочем, глобальный табачный рынок пока продолжает расти в денежном выражении, но уже в 2022м году немного отставал от инфляции.
❌ Компания диверсифицирует бизнес и выходит в новые сегмента табачного рынка такие как: жевательный табак, электронные сигареты, системы подогревания табака и т.д.
За всем этим само собой следуют дополнительные траты на развитие и продвижение новых продуктов, а конечный результат получается не таким маржинальным как продажа сигарет. По итогам 2022г новые направления совокупно принесли убыток в £400 млн.
Выводы:
British American Tobacco — это одна из немногих компаний на рынке, которая продолжает торговаться по низким мультипликаторам (fwd P/E 2023 = 10, див. доходность = 9%) без существенных проблем для бизнеса. Само собой это не компания роста, а табачный рынок уже много лет сокращается, но это не означает что бизнес BAT перестанет приносить вполне неплохую прибыль в ближайшие 10 лет.
Учитывая высокую див. доходность, компания, на мой взгляд, сейчас стоит недорого. Большинство текущих проблем (запрет ментола в США, уход из РФ, наложение санкций на Северную Корею и т.д.) носят временный и не такой существенный характер.
📈Адекватной ценой для компании считаю 40$ за акцию (примерно по P/B = 1). Видно, что компания уже не первый год работает на вывод прибыли, т.е. качественного роста бизнеса ждать в среднесроке и долгосроке не стоит, но возврат стоимости дивидендами компания обеспечивает.
Не является индивидуальной инвестиционной рекомендацией
#обзор #BTI #BritishAmericanTobacco

Кто стоит за взломом Atomic Wallet на $35 млн.

Комментарии экспертов по безопасности :: РБК.Крипто

Представители аналитических компаний отмечают, что разработчики кошелька не содействуют расследованию и отказываются предоставить данные, подтверждающие их заявления о взломе

В начале июня пользователи популярного криптокошелька Atomic Wallet столкнулись с массовыми кражами криптовалюты. Первая произошла еще 2 июня. С тех пор несколько аналитиков отследили хищения на сумму более $35 млн. Команда кошелька заявила, что расследует взлом, но на момент публикации не сообщала никаких деталей инцидента.

Atomic — это некастодиальный криптокошелек. В отличие от бирж такие кошельки позволяют пользователям хранить средства независимо от третьей стороны. Сервис изначально запущен в 2017 году как обменник криптовалют под названием Atomic Swap. По данным официального сайта, кошелек Atomic Wallet насчитывает более 5 млн пользователей.

Несмотря на то что стандартом в криптовалютах считается открытый исходный код, Atomic Wallet всегда держал свой код закрытым, в том числе от независимых аудиторов. Некоторые криптовалютные проекты предпочитают не раскрывать программный код, чтобы избежать копирования конкурентами. Однако пользователи, поскольку не могут просмотреть код, не могут проверить, действительно ли тот работает так, как должен, и не содержит уязвимостей. Вместо этого они вынуждены доверять разработчикам.

adv.rbc.ru

«Подробности тщательно скрываются»

Прозрачность блокчейна как публичного реестра переводов в криптовалютах позволяет идентифицировать адреса пострадавших кошельков и дальнейшее перемещение средств. Согласно анализу известного в криптосообществе онлайн-детектива под псевдонимом ZachXBT, хакеры украли порядка $35 млн в разных криптовалютах. С исследователем также связывались пострадавшие, предоставляя ему данные о транзакциях на кошельке. В ходе взлома были похищены средства в криптовалютах Ethereum (ETH), Dogecoin (DOGE), Litecoin (LTC), BNB (BNB) и Polygon (MATIC), а один из пострадавших лишился криптоактивов на сумму $8 млн.

Как сообщили блокчейн-аналитики Elliptic, взломщик использовал для отмывания похищенных средств популярный у хакеров из Северной Кореи криптомиксер Sinbad.io. По результатам прошлых крупных взломов расследователи подсчитали, что северокорейская хакерская группировка Lazarus Group отмыла через него более $100 млн. Аналитики не назвали сумму проведенных через миксер средств пользователей Atomic, но сообщили, что Sinbad.io — это, вероятно, переделанная версия Blender.io, сервиса, активно используемого Lazarus Group, и первого микшера, на который были наложены санкции Министерства финансов США.

Как рассказали «РБК-Крипто» представители компании MatchSystems, которая также занимается расследованиями, связанными с криптовалютами, использование микшера — единственный аргумент, связывающий северокорейских хакеров со взломом кошелька. Однако сервис публично доступен для всех желающих, а его популярность, вероятно, только возросла среди других злоумышленников после упоминаний в СМИ и блогах компаний.

«По имеющейся у нас информации, в ходе расследования со стороны руководства Atomic Wallet обратилась к нескольким компаниям, занимающимся отслеживанием криптовалют и цифровых активов. Содействие с их стороны направлено на разметку похищенных активов, но любые подробности технической стороны инцидента тщательно скрываются», — сообщил СEO компании Match Systems Андрей Кутьин. По его словам, это не позволяет провести независимую оценку взлома. Кроме того, ни одна из компаний не заявила о том, что занимается расследованием технической стороны, а команда Atomic Wallet никак не комментирует предложения о безвозмездном расследовании инцидента.

Для расследования необходимо получить так называемые логи сервера — журнал активности, в котором протоколируются все действия пользователей на сайте. По словам Кутьина, в Atomic Wallet отказываются предоставить необходимые файлы как его компании, так и другим, несмотря на многочисленные запросы.

Команда Atomic Wallet «делает все возможное», чтобы вернуть украденные средства, но создание конкретного плана возможно только после окончания расследования, заявил в комментарии для Cointelegraph директор по маркетингу Atomic Wallet Роланд Седе. По его словам, отслеживание жертвами атаки незаконных переводов и сообщение о них криптобиржам могло бы помешать мошенникам выводить средства. Со своей стороны, площадка так и делает, ведь «чем больше внимания уделяется хакерам, тем сложнее им их [средства] переместить», сказал Седе. Представители кошелька не ответили «РБК-Крипто» на запрос о комментарии.

Не первый раз

8 июня представители Atomic Wallet заявили, что расследовать инцидент помогает компания Chainalisys. По информации команды, в результате взлома пострадали «менее 1%» ежемесячно активных пользователей сервиса и атака была прекращена еще в субботу, 3 июня. Но пользователи в Twitter (соцсеть заблокирована в России) в ответ на это сообщение опубликовали скриншоты, показывающие, что их средства похищали и после указанного времени.

В комментариях социального форума Reddit пользователи также пишут о пропаже средств. Один из них рассказал, что некто, представившись сотрудником технической поддержки кошелька, написал на анонимном форуме 4chan, что команда отключила уведомления на мобильной версии кошелька перед взломом и опубликовал две фотографии монитора (одна, вторая), на которых якобы открыт интерфейс службы поддержки кошелька, где накапливаются заявки пользователей в момент инцидента. Подтвердить подлинность заявленной информации не удалось, а автора публикации заблокировали модераторы сайта.

На том же Reddit на протяжении нескольких лет появляются сообщения о пропаже средств в криптовалюте с кошелька Atomic Wallet, однако при детальном рассмотрении выясняется, что зачастую пользователи обнаруживают в компьютерах вирусы или становятся жертвами фишинга, предоставляя мошенникам данные для доступа к кошельку. Но собственный подход Atomic Wallet к безопасности также критикуют эксперты из криптосообщества.

Среди них, например, исследователь кибербезопасности и разработчик криптокошелька с открытым исходным кодом MyEtherWallet Тейлор Монахан. Еще в феврале прошлого года он критиковал Atomic Wallet за бездействие в отношении уязвимостей, выявленных в ходе аудита кошелька со стороны компании Least Authority, написав, что разработчики «отказываются слушать других». В Least Authority тогда заявили, что «система Atomic Wallet недостаточно продумана с точки зрения безопасности и подвергает пользователей кошелька значительному риску».

По словам Монахана, выявленные Least Authority недостатки в системе безопасности означают, что Atomic Wallet, вероятно, «непреднамеренно сохранял» закрытые ключи пользователей, которые используются для доступа к средствам на кошельке.

«РБК-Крипто» запустил мониторинг криптовалютных обменников. Выбирайте надежный обменный сервис с выгодным курсом на yourcryptoex.ru.

Как «закомментировать» (добавить комментарий) в пакете/cmd?

спросил

Изменено
1 год, 1 месяц назад

Просмотрено
1,6 млн раз

У меня есть пакетный файл, который запускает несколько скриптов Python, выполняющих модификации таблиц.

  1. Я хочу, чтобы пользователи комментировали 1-2 скрипта Python, которые они не хотят запускать, а не удаляли их из командного файла (чтобы следующий пользователь знал, что эти скрипты существуют как опции!)

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

Есть ли более подходящий синтаксис для добавления комментария?

  • пакетный файл
  • cmd
  • комментарии
  • комментарии-условия

3

 :: комментарийtttttttttt
Комментарий REMtttttttttt
 
  • если они не в начале строки, то добавить и символ:
    сюда ваши команды & :: commenttttttttttt
  • Внутри вложенных частей ( IF/ELSE , FOR циклов и т.д…) :: должна сопровождаться обычной линией, иначе выдает ошибку (используйте там REM ).
  • :: также может выйти из строя в течение setlocal ENABLEDELAYEDEXPANSION

20

Команда rem действительно предназначена для комментариев. По своей сути он никого не обновляет после запуска скрипта. Однако некоторые авторы сценариев могут использовать его таким образом вместо echo , потому что по умолчанию пакетный интерпретатор будет распечатывать каждую команду перед ее обработкой. Поскольку команды rem ничего не делают, их можно безопасно распечатать без побочных эффектов. Чтобы не печатать команду, добавьте к ней префикс @ , или, чтобы применить этот параметр во всей программе, запустите @echo off . (Это echo off , чтобы избежать печати дальнейших команд; @ , чтобы избежать печати этой команды до того, как настройка эха вступит в силу.)

Итак, в вашем пакетном файле вы можете использовать это:

 @ эхо выключено
REM Чтобы пропустить следующие команды Python, поставьте перед ними «REM»:
питон foo.py
питон bar.py
 

7

Нет, старые простые пакетные файлы используют REM в качестве комментария. ECHO — это команда, которая печатает что-то на экране.

Чтобы «закомментировать» разделы файла, вы можете использовать GOTO . Пример всех этих команд/методов:

 REM начинается здесь раздел ниже можно безопасно удалить после настройки файла
ECHO Эй, вам нужно отредактировать этот файл перед его запуском! Ознакомьтесь с инструкциями внутри
ECHO Теперь нажмите ctrl-c, чтобы прервать выполнение, или введите, чтобы продолжить.
ПАУЗА
REM сотрите раздел выше, как только вы настроите файл
Python выполнен1.py
ЭХО Пропускаю кое-что сейчас
ПЕРЕЙТИ к концу
Python skipped1.py
python skipped2.py
:КОНЕЦ
Python выполненный2.py
 

Что я могу сказать? командные файлы — пережиток давно минувших времен, они неуклюжи и уродливы.

Подробнее на этом сайте.

РЕДАКТИРОВАТЬ: немного изменен пример, чтобы он содержал элементы, которые вы, по-видимому, ищете.

:: вместо REM предпочтительнее использовать в дни, когда компьютеры не были очень быстрыми.
Строка REM считывается, а затем игнорируется. :: строка полностью игнорируется. Это может ускорить ваш код в «старые времена». Более того, после REM вам нужен пробел, после :: нет.

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

Что касается пропуска деталей.
Помещение REM перед каждой строкой может занять довольно много времени.
Как уже упоминалось, использование GOTO для пропуска частей — это простой способ пропустить большие фрагменты кода. Обязательно установите :LABEL в том месте, где вы хотите, чтобы код продолжался.

 НЕКОТОРЫЙ КОД
GOTO LABEL ::УДАЛИТЬ ЭТУ СТРОКУ, ЧТОБЫ ВЫПОЛНИТЬ КОД МЕЖДУ ЭТИМ GOTO И :LABEL
НЕКОТОРЫЙ КОД, ЧТОБЫ ПРОПУСТИТЬ
.
ПОСЛЕДНЯЯ СТРОКА КОДА, ЧТОБЫ ПРОПУСТИТЬ
:ЭТИКЕТКА
КОД ДЛЯ ВЫПОЛНЕНИЯ
 

9

Многострочные комментарии

Если нужно закомментировать большое количество строк, будет лучше, если вы сможете делать многострочные комментарии, а не комментировать каждую строку.

См. этот пост Роба ван дер Вуда в блоках комментариев:

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

 ПЕРЕЙТИ к концу комментария 1
Эта строка является комментарием.
Так и эта линия.
И этот...
: КонецКомментария1
 

Вы можете использовать GOTO Label и :Label для комментирования блоков.

Или, если блок комментариев появляется в конце пакетного файла, вы можете
напишите EXIT в конце кода, а затем любое количество комментариев для вашего
понимание.

 @ЭХО ВЫКЛ.
REM Сделай что-нибудь
  •
  •
REM Конец кода; используйте GOTO:EOF вместо EXIT для Windows NT и более поздних версий
ВЫХОД
Начало блока комментариев в конце пакетного файла
Эта строка является комментарием.
Так и эта линия.
И этот...
 

1

Размещение комментариев в одной строке с командами: используйте

& :: comment

 цвет C & :: установить красный цвет шрифта
эхо ВАЖНАЯ ИНФОРМАЦИЯ
color & :: сбросить цвет по умолчанию
 

Объяснение:

и разделяют две команды, поэтому в данном случае color C является первой командой, а :: установить красный цвет шрифта второй.


Важно:

Этот оператор с комментарием выглядит интуитивно правильно:

 goto error1 :: обработка ошибки
 

но это недопустимое использование комментария. Это работает только потому, что goto игнорирует все аргументы после первого. Доказательство простое, этот goto тоже не подведет:

 goto error1 обрабатывает ошибку
 

Аналогичная попытка

 цвет 17 :: серый на синем
 

не удается выполнить команду из-за 4 аргументов, неизвестных команде color : :: , серый , на , синий .

Работает только как:

 цвет 17 & :: серый на синем
 

Так что амперсанд неизбежен.

3

Вы можете что-то закомментировать, используя :: или REM :

 ваши команды здесь
:: комментарий
 

или

 ваши команды здесь
Комментарий REMtttttttttt
 

 

Чтобы сделать это в той же строке, что и команда, вы должны добавить амперсанд:

 ваши команды здесь & :: commenttttttttttt
 

или

 ваши команды здесь и комментарий REMtttttttttt
 

 

  • Использование :: во вложенной логике ( IF-ELSE , FOR циклов и т. д.) вызовет ошибку. В таких случаях используйте REM вместо.

1

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

 @echo off
:: Начало кода
...
:: Конец кода
(Я комментарий
Так я!
Это может быть только в конце командных файлов
 

Только никогда не используйте закрывающие скобки.

Авторство: Лео Гуттирес Рамирес на https://www.robvanderwoude.com/comments.php

Комментирование строки

Для строки комментария используйте REM или :: хотя :: внутри квадратных скобок может не работать

в строках с отложенным расширением, начинающихся с !<разделитель> будет игнорироваться, поэтому его можно использовать для комментариев:

 @echo off
setlocal enableDelayedExpansion
активировано расширение с задержкой эха
!;строка комментария отложенного раскрытия
эхо конец демонстрации
 

Комментарий в конце строки

Для комментариев в конце строки вы снова можете использовать rem и :: в сочетании с и :

 echo --- &:: комментарий (не должен быть последней строкой в ​​скрипте)
эхо --- &rem комментарий
 

Комментарий в конце файла

Поскольку заметки будут проанализированы после команды exit , вы можете использовать ее для добавления комментариев в конец файла:

 @echo off
эхо-команды
выход / б
--------------------
комментарии в конце
файла
------------------
 

Встроенные комментарии

Расширение несуществующих переменных ничем не заменяется, и поскольку установка переменной с = довольно сложная, вы можете использовать это для встроенных комментариев:

 @echo off
echo long command %= это комментарий =% со встроенным комментарием
 

Многострочные комментарии

Для многострочных комментариев GOTO (для внешних скобок) и REM с условным выполнением (для внутренних скобок) можно использовать. Подробнее здесь:

 @echo off
эхо-стартовый скрипт
перейти :end_comments
 закомментированная строка
 еще одна закомментированная строка
:end_comments
эхо продолжить скрипт
(
    эхо-демонстрация выключена
    бэр/||(
      линии с
      Комментарии
    )
    эхо многострочный комментарий внутри
    эхо скобки
)
 

И та же техника, украшенная макросами:

 @echo off
::Макрос комментария GOTO
установить "[:= перейти:]%%"
:: макросы комментариев в квадратных скобках
установить "[=rem/||(" & установить "]=)"
:: тестирование
эхо без комментариев 1
%[:%
  мульти
  линия
  комментарий вне скобок
%:]%
эхо без комментариев 2
%[:%
  второй мульти
  линия
  комментарий вне скобок
%:]%
::Макрос GOTO нельзя использовать внутри для
для %%a в (первая секунда) делать (
    вывести первую незакомментированную строку выполнения %%a
    %[%
        многострочный
        комментарий
    %]%
    echo вторая некомментированная строка выполнения %%a
)
 

3

Я предпочитаю использовать:

  • REM для комментариев
  • &REM для встроенных комментариев

Пример:

 @echo off
установить параметр1=%1%
REM-тест, если параметр 1 был получен
если определен параметр 1 echo Параметр 1 — %parameter1% &REM Отображение параметра
 

3

Это старая тема, и я хотел бы добавить сюда свое понимание, чтобы расширить знания об этой интересной теме.

Основное различие между REM и :: заключается в следующем:

REM — это сама команда, а :: НЕ.

Мы можем рассматривать :: как токен, который, как только синтаксический анализатор CMD встречает первый непустой пробел в строке, это токен ::, он просто пропустит всю строку и прочитает следующую строку. Вот почему за REM должен следовать как минимум пробел, чтобы он мог функционировать как комментарий к строке, в то время как :: не требует пробела после него.

То, что REM сама по себе является командой, лучше всего понять из следующего синтаксиса FOR

Основной синтаксис FOR следующий:

 FOR %v in (set) DO  [параметр команды]
 

здесь может быть любой допустимой командой
Таким образом, мы можем написать следующую допустимую командную строку, поскольку rem — это команда

 FOR %i в (1,2,3) DO rem echo %i
 

Однако мы НЕ МОЖЕМ написать следующую строку как :: не является командой

 FOR %i in (1,2,3) DO :: echo %i
 

1

Вы можете использовать :: или rem для комментариев.

При комментировании используйте :: , это в 3 раза быстрее. Пример показан здесь

Только если комментарии в если , используйте rem , так как двоеточия могут привести к ошибкам, поскольку они являются меткой.

окон. Какой стиль комментариев следует использовать в пакетных файлах?

Есть несколько способов прокомментировать пакетный файл

1)Использование rem

Это официальный способ. По-видимому, выполнение занимает больше времени, чем :: , хотя, по-видимому, он прекращает синтаксический анализ рано, до обработки кареток. Расширение в процентах происходит до того, как будут идентифицированы rem и :: , поэтому неправильное использование процентов, т. е. %~ , вызовет ошибки, если проценты присутствуют. Безопасно для использования в любом месте в блоках кода.

2) Использование ярлыков : , :: или :; и т. д.

Для :: comment , ‘: comment’ является недопустимым именем метки, поскольку оно начинается с с недопустимым символом. Однако можно использовать двоеточие в середине метки. Если пробел начинается в начале метки, он удаляется : метка становится :метка . Если в середине метки появляется пробел или двоеточие, остальная часть имени не интерпретируется, что означает, что если есть две метки :f:oo и :f rr , обе будут интерпретироваться как :f , и будет выполнен переход только к метке, определенной позже в файле. Остальная часть метки фактически является комментарием. Есть несколько альтернатив ::, указанный здесь. Вы никогда не сможете перейти к или вызвать по метке ::foo . goto :foo и goto ::foo не будут работать.

Они нормально работают за пределами кодовых блоков, но после метки в кодовом блоке, недействительной или нет, должна быть допустимая командная строка. :: comment действительно еще одна допустимая команда. Он интерпретирует его как команду, а не метку; команда имеет приоритет. Какая команда cd на том ::, которая будет работать, если вы выполнили subst :: C:\ , в противном случае вы получите сообщение об ошибке «Не удается найти том». Вот почему :; , возможно, лучше, потому что его нельзя интерпретировать таким образом, и поэтому вместо этого он интерпретируется как метка, которая служит допустимой командой. Это не рекурсивно, т. е. следующей метке не нужна команда после нее. Поэтому они идут парами.

Вам необходимо указать действительную команду после метки, например. эхо чего-то . Метка в блоке кода должна содержать хотя бы одну действительную команду, поэтому строки идут парами по две. Вы получите неожиданное 9комментарий
:;
)

Но вам нужен завершающий :; по причине, указанной выше.

 @эхо выключено
(
эхо привет
:;
:; комментарий
:; комментарий
:;
)
эхо привет
 

Все в порядке, если есть четное число. Это, несомненно, лучший способ комментирования — с 4 строками и :; . С :; вы не получите никаких ошибок, которые необходимо подавить с помощью 2> nul или subst :: C:\ . Вы можете использовать subst :: C: \ , чтобы ошибка тома не найдена исчезла, но это означает, что вам также придется поместить C: в код, чтобы ваш рабочий каталог не стал ::\ .

Чтобы прокомментировать в конце строки, вы можете сделать
command &:: или command & rem comment , но должно быть четное число, например:

 @echo off
(
эхо привет &:;да
эхо привет &:;да
:;
)
эхо привет
 

Первый echo hello & :;yes имеет действительную команду в следующей строке, а второй & :;yes — нет, поэтому он нужен, т.е. :; .

3) Использование недопустимой переменной среды

%= комментарий =% . В пакетном файле переменные среды, которые не определены, удаляются из сценария.