Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как закомментировать строку в bat файле


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

Windows
  • Bot
  • 25.01.2020
  • 9 791
  • 2
  • 39
  • 39
  • 0
  • Содержание статьи

Описание

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

Примеры

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

goto start
 --------------------------------------
 Этот пакетный файл предназначен
 для автоматизации рутинных операций,
 выполняемых ночью для синхронизации
 содержимого корпоративного ftp-сервера
 с ftp-серверами филиалов
 --------------------------------------
 Пакетный файл написан 01/01/2004
 Последнее исправление внесено 10/02/2004
 --------------------------------------
 И т.д.
 :start

Такое написание комментария при запуске пакетного файла передаст управление сразу к команде, следующей за меткой start. За это отвечает оператор перехода goto.
Более простые комментарии (из одной или нескольких строк) можно добавить, начиная строки с команды rem или с двух двоеточий, идущих друг за другом.

rem Этот блок устанавливает соединение с удаленным сервером
 rem А это вторая строка с комментарием
:: Этот блок проверяет дату изменения файлов
 :: А это вторая строка с комментарием

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

Добавление Комментарий в Bat-файл - ShellHacks

Bat-файлом в Windows называют текстовый файл, который обычно имеет расширение .bat и содержит одну или несколько команд командной строки.

Хорошей практикой является комментирование исходного кода в bat-файлах, путем оставления примечаний, объясняющих функциональность каких-либо строк или блоков кода.

Также любую строку или блок кода в bat-файле можно деактивировать, превратив ее в комментарий (закомментировать) и активировать обратно (раскомментировать).

В этой заметке показано, как комментировать bat-файлы в Windows.

Дельный Совет: Узнать код завершения команды/приложения! Читать далее →

Комментирование Bat-файлов

Комментарий в bat-файле может быть оставлен как с помощью двух двоеточий ::, так и с помощью команды REM.

Основное отличие состоит в том, что строки, закомментированные командой REM, будут отображаться во время выполнения bat-файла (можно избежать установив @echo off), в то время как строки, закомментированные с помощью ::, отображаться не будут.

Создать комментарий или закомментировать строку кода в bat-файле:

:: This is a comment that won't be printed
 - или -
 REM This is a comment that will be printed

Комментарий на одной строке с комментируемым кодом:

ECHO "Hello" & :: This command prints 'Hello'
 - или -
 ECHO "Hello" REM This command prints 'Hello'
 

Блок кода (несколько строк) в bat-файле может быть закомментирован с помощью GOTO:


 GOTO comment
 ...skip this...
 :comment
 

Дельный Совет: Как автоматически отвечать «Yes» или «No» на запросы в Windows PowerShell и CMD! Читать далее →

Как добавить комментарии в bat-файл — b14esh.com

Описание:

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

При написании большого пакетного файла очень полезно добавлять комментарии к его основным блокам.

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

Комментирование больших пакетных файлов (как, в принципе, и любого кода) - хороший тон,

который значительно облегчает процесс разбора этих файлов другими людьми или самим автором

по прошествии значительного времени с момента написания.

Комментарии можно добавить несколькими способами.

Первый:

Больше годится для написания больших комментариев, описывающих либо весь пакетный файл, либо несколько больших его блоков. Код выглядит следующим образом: goto start -------------------------------------- Этот пакетный файл предназначен для автоматизации рутинных операций, выполняемых ночью для синхронизации содержимого корпоративного ftp-сервера с ftp-серверами филиалов -------------------------------------- Пакетный файл написан 01/01/2004 Последнее исправление внесено 10/02/2004 -------------------------------------- И т.д. :start Такое написание комментария при запуске пакетного файла передаст управление сразу к команде, следующей за меткой start. За это отвечает оператор перехода goto.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

Больше годится для написания больших комментариев, описывающих либо весь пакетный файл, либо несколько больших его блоков.

 

Код выглядит следующим образом:

goto start

--------------------------------------

Этот пакетный файл предназначен

для автоматизации рутинных операций,

выполняемых ночью для синхронизации

содержимого корпоративного ftp-сервера

с ftp-серверами филиалов

--------------------------------------

Пакетный файл написан 01/01/2004

Последнее исправление внесено 10/02/2004

--------------------------------------

И т.д.

:start

 

Такое написание комментария при запуске пакетного файла передаст управление сразу к команде,

следующей за меткой start. За это отвечает оператор перехода goto.

Второй:

Простые комментарии можно добавить, начиная строки с команды rem rem Этот блок устанавливает соединение с удаленным сервером

Простые комментарии можно добавить, начиная строки с команды rem

 

rem Этот блок устанавливает соединение с удаленным сервером

Третий:

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

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

 

:: Этот блок проверяет дату изменения файлов

Закомментировать строку в bat

Как добавить комментарии в батник?

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

rem Этот блок выводит надпись на экран

:: Этот блок выводит надпись на экран

ПРИ НАПИСАНИИ СЛОЖНЫХ БАТНИКОВ
ЖЕЛАТЕЛЬНО КОММЕНТИРОВАТЬ СТРОКИ
ЧТОБ НЕ ЗАПУТАТЬСЯ ИЛИ ЧТОБЫ
БЫЛО ПОНЯТНО ДРУГИМ ПОЛЬЗОВАТЕЛЯМ.

. главная . статьи . программы . разное . гостевая .
. ресурс обмена файлами .

_________________________________________________________

— consigna: Сохраним нашу планету зелёной! ("Гринпис") —

FAQ по BATCH в Windows.

"Увидев медведя — не пингуй. Веди себя по умолчанию."

Q: Что такое BATCH?
A: Пакетные (BACTH — "пакетный") файлы обычно представлены в виде тектовых файлов, которые содержат определённые команды интерпритатора для автоматической обработки системой. В качестве параметров могут выступать, как имена исполняемыйх файлов, так и специальные инструкции: условия, циклы, безусловные переходы. BATCH-файлы могу иметь расширение .BAT (во всех версиях Windows) и .CMD (в линейке Windows NT). BAT-файлы были популярны ещё со времён операционной системы MS-DOS. С приходом Windows некоторые из функциональ- ных особенностей BAT файлов потеряли свою актуальность, но и сейчас можно упростить выполнение многие сложных прикладных задач (копирование, удаление, проверка файла на наличие, сложная компиляция) с помощью конфигурирования

Q: Как создать BATCH файл?
A: BATCH файл можно создать, набрав в любом текстовом редакторе (в "Блокноте" под Windows и Edit под DOS) файл с нужными коммандами и сохранив его с расширением .bat Вот пример простого BAT — файла, который выводит на экран строку, дожидается нажатия любой клавишы и очищает экран:
———————8
@ECHO OFF
ECHO Hello!
^Z
———————8 >help.txt — в файле help.txt будет находиться содержание справки.
Q: Как закомментировать фрагмент BATCH файла — строку или несколько строк?
A: Для того, чтобы закомментировать одну строчку в файле можно использовать:
———————8 COM1
передаст в устройство на COM1 (на модем) команду набора номера.
———————————————————————————
@
Оператор @ позволяет не выводить следующую за ним команду на экран. Это аналог оператора ECHO OFF только для одной строки.
———————————————————————————
GOTO
Оператор GOTO (подобно оператору GOTO в Бейсике) осуществляет безусловный переход на метку внутри данного файла.
Пример:
GOTO lab
.
lab:
Имя метки носит символический характер, но должно быть уникальным. Оператор ":" может быть использован в качестве комментария.
———————————————————————————
%
В языке BATCH-файлов возможно использование переменных. Всего может быть до 10 одновременно существующих независимых переменных.
Значение переменной равно значению соответствующего параметра из командной строки. Переменная %0 будет содержать имя .bat-файла и, если вы указали, путь к нему. То есть, если у нас есть командная строка abc.bat a bc def то переменная %1 будет содержать значение a, %2 будет содержать bc, а %3 — def.Это свойство широко используется для создания универсальных пакетных файлов при работе с повторяющимися операциями.
Если Вам необходимо более 10 переменных, то возможно использование команды SHIFT Если необходимо передать значение, например, из параметра %1 в %2, то приходится прибегать к некоторым уловкам. Например, можно записать в файле ABC.BAT: ABC.BAT %2 %1
Это вызовет прекращение выполнения данного файла и передаст управление ему же, но с параметрами, записанными в обратном порядке.
———————————————————————————
SHIFT
Команда SHIFT позволяет использовать число параметров командной строки более 10. При этом происходит циклический сдвиг влево и теряются более ранние параметры.
Операция необратима.
———————————————————————————
CALL
Команда CALL позволяет вызвать один пакетный файл из другого, не прекращая выполнения предыдущего. Пример:
@ECHO OFF
ECHO Этот текст выводится
CALL TEST.BAT
ECHO Этот текст тоже выводится
TEST.BAT
ECHO А этот уже не выводится.

При выполнении TEST.BAT обработка текущего пакетного файла была прекращена и управление было передано TEST.BAT.
———————————————————————————
IF
Оператор IF проверяет истинность какого-либо и в зависимости от этого выполняет или не выполняет команду .
Пример:
IF EXIST TEST.BAT GOTO lab1
если существует файл TEST.BAT, то перейти на метку lab1.
IF NOT EXIST TEST.BAT GOTO exit
если файл TEST.BAT не существует, то следует перейти на метку exit.
IF %1==ASDF GOTO asdflabel
если переменная %1 равна ASDF, то осуществляется переход на метку asdflabel.
IF ERRORLEVEL 1 GOTO err1
если ошибка (код возврата) выполнения предыдущей команды равно 1, то перейти на
метку err1.
———————————————————————————
PAUSE
Команда PAUSE приостанавливает выполнение пакетного файла и выдает на экран приглашение нажать на любую клавишу для продолжения работы.
———————————————————————————
FOR % IN ( ) DO
С помощью оператора FOR возможно выполнение одной и той же команды несколько раз для различных параметров.
———————————————————————————
SET =
Оператор SET представляет собой расширение возможностей работы с параметрами в операционной системе. Он задает переменную, значение которой подставляется вместо ее имени при любом использовании этого имени между знаками процента. Наиболее известной является переменная PATH, представляющая собой набор путей для быстрого поиска файлов.

Q: Как можно использовать BAT-файлы для компиляции проектов на ассемблере?
A: Вот несколько каркасных примеров BAT-файла, который выполняет компиляцию проекта на ассемблере.
Компиляция проекта без ресурсов:
————————8

0,3% echo.Month : %date:

4,2% echo.Day : %date:

7,2% echo.Year : %date:

Удаление первого и последнего символа в строке

(часто этот прием используют для удаления окаймляющих кавычек)

Удаление подстроки в строке

В данном примере из строки будет удалена подстрока "кожа "

Удаление всех пробелов в строке

Как вариант предыдущего примера

Замена подстроки в строке

Объединение строк

Удаление ведущих пробелов

Конвертровать большие буквы в маленькие

1 EXIT /b for %%a in ("A=a" "B=b" "C=c" "D=d" "E=e" "F=f" "G=g" "H=h" "I=i" "J=j" "K=k" "L=l" "M=m" "N=n" "O=o" "P=p" "Q=q" "R=r" "S=s" "T=t" "U=u" "V=v" "W=w" "X=x" "Y=y" "Z=z" "А=а" "Б=б" "В=в" "Г=г" "Д=д" "Е=е" "Ж=ж" "З=з" "И=и" "К=к" "Л=л" "М=м" "Н=н" "О=о" "П=п" "Р=р" "С=с" "Т=т" "У=у" "Ф=ф" "Х=х" "Ц=ц" "Ч=ч" "Ш=ш" "Щ=щ" "Ь=ь" "Ы=ы" "Ъ=ъ" "Э=э" "Ю=ю" "Я=я") do ( call set %

ЗАМЕНА ОДНОЙ ПОДСТРОКИ НА ДРУГУЮ В ФАЙЛЕ

Для выполнения этой операции можно использовать утилиту sbs2.com
Традиция и дошедший комментарий приписывает авторство Herbert Kleebauer. Получить эту программку можно выполнив следующий бат файл:

x>viH>`LYNBGyA?@xAB?sUq`>>sbs2.com
echo LRy@PwtCYQEuFK@A

BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>>sbs2.com
echo LHsPBGyA?@xAunjzA>EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>>sbs2.com
echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?

>>sbs2.com
echo CK>Ayre

В результате, в папке, где будет запущен приведенный выше текст, создастся файл sbs2.com.
Возможно, вы будете приятно удивлены его размером — 659 БАЙТ!
Те, кому вышеприведенные изыски кажутся излишними, могут скачать готовую утилиту здесь.
Использование:
sbs2.com 0 "Old String" "New String" outfile
Осуществляется замена всех вхождений Old String на New String в файле infile. Результат запишется в файл outfile.

Такую задачу можно решить без использования сторонних программ, только средствами bat !
Ниже приведен пример с использованием локальной процедуры txtrepl

Вывод на экран, в файл текста без перевода строки

В bat/cmd командах не предусмотрена возможность вывода данных без перевода строки. Но для решения такой задачи можно использовать некую уловку.
Команда set с параметром, предусматривающим ввод данных с экрана, позволяет вывести подсказку для ввода без перевода строки. Вот этим мы и воспользуемся.
b.txt

Использование этого приема в сочетании с символом backspace (код 08) позволяет сделать вывод на экран изменяемого текста и как вариант — "вращающейся палки".

Вычисление длины строковой переменной

В bat/cmd командах нет функции, позволяющей вычислять длину строковой переменной. А такая задача возникает не так уж и редко. Однако средств командного языка достаточно, для того что бы решить такую задачу, не прибегая к использованию специальных программ. Рассмотрим несколько вариантов решения данной задачи:

1 :startvarcount if not defined var exit /b set var=%var:

1% set /a %2+=1 goto startvarcount exit /b

Еще один вариант вычисления длины строковой переменной:

1" GoTo :EOF :StringLenLoop Set /A $StringLen+=1 Call Set $StringChr=%%$StringBuf:

%$StringLen%%% If ""=="%$StringChr%" GOTO :EOF GoTo :StringLenLoop

Еще один способ определения длины строки, как ни странно — достаточно быстрый:

n0.tmp" For %%i In ("%TEMP%\%

n0.tmp") Do Set /A z=%%

Ну и, наконец, решение, поразившее меня своей математической лаконичностью:

1!"&rem keep the A up front to ensure we rem get the length and not the upper bound rem it also avoids trouble in case of empty string set "len=0" for /L %%A in (12,-1,0) do ( set /a "len|=1% >" 1 call set sim=%%str:

!BB!,1%% if "!sim!" == "" ( set /a mmax=!BB!) else ( set /a mmin=!BB! ) ) ENDLOCAL & SET /a %

2=%mmin% EXIT /b %mmin%

Получение подстроки.

Если смещение начала подстроки и ее длина являются константами — здесь все достаточно просто и аналогичный пример рассматривался выше:

Прошу прощения, если в качестве значения переменной str я опубликовал чей-то пароль )).
Если же одна или обе эти величины — переменные, то решение будет не столь простое.
Здесь встретиться возможно не совсем обычное применение команды CALL. Немного глубже об этом на странице Полезное в разделе Особенности использования команды CALL. Там же рассмотрен и этот пример.
Итак, рассмотрим возможные решения:

Или как вариант предыдущего

Удаление ведущих и замыкающих пробелов.

%curpos%,1! if "!SUBD!" == "" GoTo :formrez if NOT "!SUBD!" == " " ( if !firstnoblank! == -1 set firstnoblank=!curpos! set lastnoblank=!curpos! ) set /a curpos = !curpos!+1 GoTo :StringLenLoop :formrez set /a n1=!firstnoblank!-1 set /a n2=!lastnoblank!-!firstnoblank!+1 if !firstnoblank! == -1 (set "rez=") else (set rez=!%1:

Комментарии в Bat файлах - CMD \ BAT \ batch файлы - Статьй

Пакетные или batch файлы - это обычные текстовые файлы, содержащие наборы команд интерпритатора и имеющие расширение bat или cmd (cmd работают только в ОС семейства NT).

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

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

goto start
--------------------------------------
Этот пакетный файл предназначен
для автоматизации рутинных операций,
выполняемых ночью для синхронизации
содержимого корпоративного ftp-сервера
с ftp-серверами филиалов
--------------------------------------
Пакетный файл написан 01/01/2004
Последнее исправление внесено 10/02/2004
--------------------------------------
И т.д.
:start

Такое написание комментария при запуске пакетного файла передаст управление сразу к команде, следующей за меткой start. За это отвечает оператор перехода goto.

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

rem Этот блок устанавливает соединение с удаленным сервером

:: Этот блок проверяет дату изменения файлов

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

Как добавить комментарии в bat-файл - Windows - Компьютеры - Каталог статей

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

goto start
--------------------------------------
Этот пакетный файл предназначен
для автоматизации рутинных операций,
выполняемых ночью для синхронизации
содержимого корпоративного ftp-сервера
с ftp-серверами филиалов
--------------------------------------
Пакетный файл написан 01/01/2004
Последнее исправление внесено 10/02/2004
--------------------------------------
И т.д.
:start

Такое написание комментария при запуске пакетного файла передаст управление сразу к команде, следующей за меткой start. За это отвечает оператор перехода goto.
Более простые комментарии можно добавить, начиная строки с команды rem или с двух двоеточий, идущих друг за другом.

rem Этот блок устанавливает соединение с удаленным сервером

:: Этот блок проверяет дату изменения файлов
Комментирование больших пакетных файлов (как, в принципе, и любого кода) - хороший тон, который значительно облегчает процесс разбора этих файлов другими людьми или самим автором по прошествии значительного времени с момента написания.

Источник: http://www.windowsfaq.ru/content/view/36/45/

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

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

.

Пакетные файлы - Комментарии

Пакетные файлы - Комментарии

Независимо от используемого языка программирования или сценариев, всегда полезно вставлять комментарии в сценарии, объясняющие, что следующие строки или блок кода пытаются выполнить, как и / или почему.

Комментарии в командных файлах обычно помещаются в строки, начинающиеся с REM (REMarks).

Если у вас отключено много строк REM , это может замедлить COMMAND.COM обработка командного файла.

Как вы, наверное, знаете, COMMAND.COM читает командный файл, выполняет одну командную строку, снова читает командный файл, выполняет следующую командную строку и так далее.
Это означает, что каждая строка комментария вызывает одно дополнительное перечитывание командного файла; Нет проблем при чтении с жесткого диска, но это может замедлить выполнение командного файла с медленных гибких или сетевых дисков.

Обходной путь, который я видел много раз (в былые времена, когда я был молод, и динозавры бродили по Земле, а жесткие диски были 20 МБ), это преобразование строки комментария в метку, начав строку с двоеточия (:).
COMMAND.COM пропускает ярлыки, к которым не нужно переходить.

Этот метод имеет тот недостаток, что ваш командный файл может "случайно" действительно использовать метку для перехода.

Как указывает Марк Стерн в одном из своих пакетных файлов MS-DOS «Советы и уловки», эту проблему можно решить, используя двойное двоеточие (::) в качестве первых символов строки комментария.
Таким образом, метка недействительна, но по-прежнему рассматривается как метка и пропускается (т.е. следующая строка сразу же считывается командой COMMAND.COM, без необходимости повторно открывать командный файл). Это может ускорить чтение больших блоков строк комментариев с медленных (гибких) дисководов.

Тот же трюк работает и в CMD.EXE (командный процессор в Windows NT 4 и более поздних версиях) (хотя насчет OS / 2 не уверен) ...

... но с некоторыми ограничениями!

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

 ЕСЛИ СУЩЕСТВУЕТ C: \ AUTOEXEC.BAT REM AUTOEXEC.BAT существует 

это является действительным и не будет генерировать сообщение об ошибке ни в одной версии DOS или Windows.

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

 REM Строка комментария 1 REM Строка комментария 2 : Label1 : Label2 :: Строка комментария 3 :: Строка комментария 4 ЕСЛИ СУЩЕСТВУЕТ C: \ AUTOEXEC.BAT REM AUTOEXEC.BAT существует 

все разрешены.
Однако

 ЕСЛИ СУЩЕСТВУЕТ C: \ AUTOEXEC.BAT :: AUTOEXEC.BAT существует 

приведет к сообщению об ошибке синтаксиса.

Настоящая ловушка - это кодовых блоков , несколько команд сгруппированы в круглых скобках, а интерпретируется CMD.EXE как одна командная строка !

 ЕСЛИ СУЩЕСТВУЕТ C: \ AUTOEXEC.BAT ( :: Строка комментария 1 ЭХО Сделай что-нибудь :: Строка комментария 2 ) 

приведет к сообщению об ошибке:

) в это время было неожиданным.

и:

 ЕСЛИ СУЩЕСТВУЕТ C: \ AUTOEXEC.BAT ( :: Строка комментария 1 ЭХО Сделай что-нибудь :: Строка комментария 2 :: Строка комментария 3 ) 

приведет к другому сообщению об ошибке:

Сделай что-нибудь
Система не может найти указанный диск.

То же верно и для циклов FOR.
Попробуйте и убедитесь сами:

 FOR %% A IN (1 2 3) DO ( :: Строка комментария 1 ЭХО Сделай что-нибудь :: Строка комментария 2 ) 

и:

 FOR %% A IN (1 2 3) DO ( :: Строка комментария 1 ЭХО Сделай что-нибудь :: Строка комментария 2 :: Строка комментария 3 ) 

также приведет к сообщениям об ошибках.

Ошибки вызваны метками, используемыми в кодовых блоках.

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

 FOR %% A IN (1 2 3) DO ( :: Строка комментария 1 ЭХО Сделай что-нибудь :: Строка комментария 2 ЭХО Сделай что-нибудь ) 

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

Источник: обсуждение стилей комментариев на StackOverflow.com

Замените двойные двоеточия операторами REM , и все эти образцы будут выполняться без сбоев.
Еще лучше вообще не использовать комментарии внутри блоков кода, а вместо этого размещать их непосредственно перед блоками кода:

 :: Строка комментария 1 :: Строка комментария 2 :: Строка комментария 3 FOR %% A IN (1 2 3) DO ( ЭХО Сделай что-нибудь ) 

или:

 REM Строка комментария 1 REM Строка комментария 2 REM Строка комментария 3 FOR %% A IN (1 2 3) DO ( ЭХО Сделай что-нибудь ) 
Тайна:
 ( REM комментарий1 ECHO comment1 ) (Комментарий REM2 и комментарий ECHO2) Комментарий REM3 и комментарий ECHO3 ECHO comment4 

В приведенном выше коде используются 3 кодовых блока, каждый из которых содержит команду REM , за которой следует команда ECHO .
За тремя кодовыми блоками следует четвертая «автономная» команда ECHO .
Предполагается, что 3 блока кода ведут себя более или менее одинаково, по крайней мере, в более старых версиях, таких как Windows NT 4 и 2000 ...

Ну, а в Windows 7 нет!

 D: \> test_REM_comments_in_code_blocks.bat D: \> ( REM комментарий1 ECHO comment1 ) комментарий1 D: \> D: \> 

комментарий1 - единственный комментарий ECHO ed.
Блок кода для comment2 отображает только пустую строку.
Кодовый блок для comment3 никогда не достигается ...

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

Итак, вы, , можете объяснить такое поведение ...?

Ответ можно найти в конце этой страницы.

Дополнительная информация по теме:

(Спасибо за Ли Уилбура и Майкла Клемента)

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

 REM DIR> файл журнала.журнал 

В CMD.EXE (Windows NT 4 и новее) строка полностью игнорируется (как, вероятно, и предполагалось), но COMMAND.COM (MS-DOS, Windows 9x) интерпретирует эту строку как «перенаправить вывод REM в файл журнала. .log ", таким образом очищая файл logfile.log или создавая файл logfile.log размером 0 байт.

Примечание: Я хотел бы упомянуть одну ситуацию, когда я всегда предпочитаю REM двойному двоеточию: пакетные файлы для автоматической установки.
Почему?
Я всегда не использую @ECHO OFF , поскольку тихая установка обычно выполняется в фоновом режиме.
Однако при тестировании я буду запускать командные файлы в интерактивном режиме, а затем будут отображаться комментарии REM ed (помните, нет @ECHO OFF ), потому что это команд , а не меток .

Обобщение:

  • REM - это соответствующее стандартам документированное заявление для вставки комментариев в командные файлы
  • двойные двоеточия - это недокументированный и несовместимый способ вставки комментариев; нет гарантии, что они будут работать в будущих версиях Windows
  • теоретически, использование двойных двоеточий может ускорить выполнение командных файлов при запуске с медленного диска (например,г. дискета), но я сомневаюсь, что разницу можно обнаружить на современных компьютерах
  • для больших блоков комментариев, команда GOTO непосредственно перед комментариями, переход к метке сразу после комментариев, является более безопасным и более совместимым со стандартами способом ускорения пакетного выполнения с медленных дисков
  • , поскольку двойные двоеточия на самом деле являются метками, их следует размещать в начале командной строки; хотя ведущие пробелы разрешены, разрешены, все остальное -
  • использование двойных двоеточий внутри кодовых блоков нарушает предыдущее «правило» и обычно приводит к ошибкам (за исключением некоторых особых случаев)
  • постарайтесь избегать комментариев внутри кодовых блоков или используйте REM , если необходимо (но помните о подводных камнях, если вы используете REM )
  • с КОМАНДОЙ.COM будьте осторожны при использовании REM или двойного двоеточия для временного «отключения» командной строки, особенно если она содержит конвейер, перенаправление или переменные
  • , несмотря ни на что, нет ничего плохого в использовании двойных двоеточий для комментариев , если вы понимаете ограничения
  • тестируйте, тестируйте, тестируйте и тестируйте ваши командные файлы, включая строки комментариев, на всех версиях Windows они будут использоваться для

Труба REM для блокировки Стандартный ввод

Действительно полезный трюк - использовать REM в сочетании с трубопроводом, как в:

 REM | ВЫБОР / C: AB / T: A, 5> NUL 

Команда CHOICE сама по себе истечет по тайм-ауту через 5 секунд (/ T), кроме случаев, когда кто-то нажмет клавишу, не указанную в / C, и в этом случае обратный отсчет будет прерван.
Используя REM и соединяя его (всегда пустой) стандартный вывод со стандартным вводом CHOICE, этот стандартный ввод больше не будет получать нажатия клавиш с консоли (клавиатуры). Таким образом, нажатие кнопки не ускоряет CHOICE и не останавливает его.
(Я позаимствовал эту технику у «Outsider», одного из «постоянных клиентов» группы новостей alt.msdos.batch, и добавил параметр / C, чтобы сделать его независимым от языка)

Примечание: Этот трюк будет работать в COMMAND.Только COM, а не в CMD.EXE.
В CMD.EXE все, что находится после «команды» REM , считается комментарием, включая символ вертикальной черты.
Для CMD.EXE можно использовать следующую команду (Windows XP и новее):

TYPE NUL | CHOICE / C: AB / T: A, 5> NUL

Прочтите мою страницу ожидания, чтобы узнать, как установить задержки в Windows NT 4 и более поздних версиях.

Несколько языков позволяют закомментировать полные блоки кода с помощью «тегов» / * и * / .
Rexx, например, будет рассматривать весь текст, помеченный красным, как комментарий:

 Скажите: «Эта строка - настоящий код» / * Но это комментарий. И эта линия тоже. И этот... * / 

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

 @ECHO OFF REM Сделайте что-нибудь • • REM Конец кода REM Начало блока комментариев 1 GOTO EndComment1 Эта строка является комментарием.И эта линия тоже. И этот... : EndComment1 

Или, если блок комментария появляется в конце командного файла:

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

Тайна разгадана

Недавно Васко Рато показал мне решение загадочно исчезающего кода.

Если вы прочитаете уловку Лео Гутьерреса Рамиреса с отсутствующей закрывающей круглой скобкой, вы увидите, что именно это и происходит.
Следующая строка кода:

 (REM комментарий2 и ECHO comment2) 

эквивалентно

 (REM что угодно 

, так как все, что следует за оператором REM , включая закрывающую круглую скобку, является комментарием, т.е. не интерпретируется !

Поскольку в «блоке загадочного кода» после этого комментария не было других круглых скобок, все от открывающей скобки до и оператора REM до конца кода является блоком комментариев «в стиле Лео Гутьерреса Рамиреса».

Как утверждает Васко: все ведет себя так, как и следовало ожидать.

Спасибо Васко и Лео

последняя загрузка страницы: 2019-03-12, 15:05

.Окна

- как эхо и отправить вывод консоли в файл в сценарии bat?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

    .

    Как пройти каждую строку в текстовом файле с помощью командного файла Windows?

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
    4. Талант
    .

    cmd - Как я могу запускать команды в пакетном режиме и сохранять результат в текстовом файле?

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
    4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
    5. Реклама Обратитесь к разработчикам и технологам со всего мира
    6. О компании
    .

    Как передать аргументы в командный файл?

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
    4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
    .

    Смотрите также