Разное

Cmd комментарий: Как сделать комментарии в командной строке Windows?

28.03.1975

Содержание

REM – комментарий в командном файле.

Команда REM является встроенной командой интерпретатора команд cmd.exe и применяется для создания комментариев в командных файлах. Строка, начинающаяся с REM, не обрабатывается командным интерпретатором и может использоваться для пояснений, заметок и т.п., что бывает очень не лишним в сложных bat-файлах. Иногда, в качестве альтернативы команде REM используются приемы, основанные на особенностях реализации командного процессора cmd.exe, как, например, двойное двоеточие:

@ECHO OFF
::
:: Начало работы
REM
REM Продолжение работы
Echo Hello REM Этот текст будет полностью отображен командой ECHO
Echo Hello & REM Отобразить «Hello» командой echo
Copy 1.bat 2.bat & :: Копирование файла 1.bat в 2.bat
pause

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

При использовании в цепочке с другой командой с помощью амперсанда & позволяет поместить комментарий в ту же строку, что и исполняемая команда:

сopy 1.bat 2.bat & rem Копирование файла 1.bat в 2.bat
Или
сopy 1.bat 2.bat & :: Копирование файла 1.bat в 2.bat

Такая конструкция позволяет поместить комментарий к отдельной команде bat-файла.

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

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

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

REM Это большой командный файл
Goto :Label1
Здесь можно разместить любой текст, который может быть подробным описанием командного файла.
:label1
Rem начало исполняемой части командного файла
@echo off
. . .

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

Windows
  • Bot
  • 25.01.2020
  • 21 796
  • 3
  • 78
  • 78
  • 0
  • Содержание статьи

Описание

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

В этой статье мы расскажем о том, как вставить комментарий в bat файл

Примеры

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

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

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

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

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

Как «comment-out» (добавить комментарий) в batch/cmd?



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

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

  2. Я также хочу добавить комментарии, чтобы привлечь их внимание конкретно к переменным, которые они должны обновить в Batch file, прежде чем запускать его.

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

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

batch-file cmd comments comment-conventions
Поделиться Источник user1397044     29 июня 2012 в 21:40

10 ответов




1008

::   commenttttttttttt
REM  commenttttttttttt
  • :: не работает в строке; добавьте символ & :
    your commands here & :: commenttttttttttt
  • Внутри вложенных частей ( IF/ELSE , FOR циклов и т. Д.) За :: должна следовать нормальная строка, в противном случае она дает ошибку (используйте REM там).
  • :: также может потерпеть неудачу в setlocal ENABLEDELAYEDEXPANSION

Поделиться

T. Todua     30 мая 2013 в 15:02



927

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

@echo off . (Это echo off , чтобы избежать печати дальнейших команд; @ -чтобы избежать печати этой команды до вступления в силу параметра echo.)

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

@echo off
REM To skip the following Python commands, put "REM" before them:
python foo. py
python bar.py

Поделиться Rob Kennedy     29 июня 2012 в 21:49



50


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

Для «comment out» разделов файла вы можете использовать GOTO . Пример всех этих commands/techniques:

REM it starts here the section below can be safely erased once the file is customised
ECHO Hey you need to edit this file before running it!  Check the instructions inside
ECHO Now press ctrl-c to interrupt execution or enter to continue
PAUSE
REM erase the section above once you have customised the file
python executed1.py
ECHO Skipping some stuff now
GOTO End
python skipped1.py
python skipped2.py
:END
python executed2.py

Что я могу сказать? пакетные файлы-это пережиток давно минувших времен, они неуклюжи и уродливы. fileName >outFileName Я хотел бы добавить комментарий к каждому из вариантов — e, как указано в следующих…



33

:: вместо REM предпочтительно использовалось в те дни, когда компьютеры были не очень быстрыми. REM’ed строки считываются, а затем регистрируются. ::»строки ed полностью игнорируются. Это может ускорить ваш код в «the old days». Далее, после REM вам нужно пространство, после ::-нет.

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

SET DATETIME=%DTS:~0,8%-%DTS:~8,6% ::Makes YYYYMMDD-HHMMSS

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

SOME CODE

GOTO LABEL  ::REM OUT THIS LINE TO EXECUTE THE CODE BETWEEN THIS GOTO AND :LABEL

SOME CODE TO SKIP
.
LAST LINE OF CODE TO SKIP

:LABEL
CODE TO EXECUTE

Поделиться Kees     02 ноября 2013 в 21:33



27

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

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

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

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

GOTO EndComment1
This line is comment.
And so is this line.
And this one...
:EndComment1

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

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

@ECHO OFF
REM Do something
  •
  •
REM End of code; use GOTO:EOF instead of EXIT for Windows NT and later
EXIT

Start of comment block at end of batch file
This line is comment.
And so is this line.
And this one...

Поделиться Somnath Muluk     24 августа 2016 в 10:50



14

Размещение комментариев в одной строке с командами: use

& :: comment
color C          & :: set red font color
echo IMPORTANT INFORMATION
color            & :: reset the color to default

Объяснение:

& разделяет две команды , поэтому в данном случае color C -это первая команда, а :: set red font color -вторая.


Важный:

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

goto error1         :: handling the error

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

goto error1 handling the error

Но подобная попытка

color 17            :: grey on blue

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

Он будет работать только как:

color 17     &      :: grey on blue

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

Поделиться miroxlav     09 июня 2017 в 14:38



6

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

your commands here
:: commenttttttttttt

или

your commands here
REM  commenttttttttttt

 

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

your commands here      & ::  commenttttttttttt

или

your commands here      & REM  commenttttttttttt

 

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

Поделиться Pikamander2     21 сентября 2018 в 05:24



2

Вы можете добавить комментарии в конец batch file с помощью этого синтаксиса:

@echo off
:: Start of code
...
:: End of code

(I am a comment
So I am!
This can be only at the end of batch files

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

Атрибуция: Лео Гуттирес Рамирес на https:/ / www.robvanderwoude.com / комментарии. php

Поделиться Wasif     12 января 2020 в 16:40



1

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

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

REM-это сама команда, в то время как ::-это NOT.

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

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

Основной синтаксис FOR выглядит следующим образом

FOR %v in (set) DO <Command> [command param] 

здесь <Command> может быть любая допустимая команда Таким образом, мы можем написать следующую допустимую командную строку, поскольку rem -это команда

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

Однако мы CANNOT пишем следующую строку, так как :: не является командой

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

Поделиться jyao     13 февраля 2019 в 07:12



0

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

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

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

Поделиться Anic17     14 июня 2020 в 17:01


Похожие вопросы:


Добавить комментарий для использования скрипта python?

Во-первых, я не знаю, есть ли какое-то хорошее правило или обычная практика добавления комментариев для использования скрипта Python. Вот мой вопрос. В скрипте python, с определением функций и…


Как получить комментарий от плагина facebook comment

Я следовал этому руководству, чтобы вызвать функцию, когда делается комментарий. В настоящее время я могу сделать вызов ajax, чтобы взаимодействовать с моим DB, когда делается комментарий. Плагин FB. ..


params[:comment] где автор дает: комментарий?

Я хочу понять, где автор дает: комментарий, который приходит к контроллеру из этой формы <h3>Add a comment:</h3> <%= form_for([@post, @post.comments.build]) do |f| %> <p>…


Как добавить комментарий набора изменений как часть скрипта

При создании набора изменений я получаю ID, который затем могу использовать для назначения комментария набора изменений : scm create changeset scm changeset comment <id_returned_by_create> my…


Добавить комментарий к локализации раскадровки

Можно ли добавить комментарий к локализованной строке в раскадровке ? /* Class = IBUILabel; text = Some text; comment = This is the comment to help translator ObjectID = 0N3-up-Ts6; */…


Запустите batch file в окне externam CMD из PowerShell

У меня есть скрипт PowerShell, который запускается при запуске и создает пару пакетных файлов. fileName…


Как добавить видимый комментарий HTML в JSX?

Я использую ReactJS, и у меня есть требование добавить видимый комментарий HTML (в источнике html) в JSX, но я не уверен, как это сделать. Этот комментарий необходим стороннему поставщику для…


Добавить комментарий к началу документа

Используя ElementTree, как разместить комментарий чуть ниже объявления XML и выше корневого элемента? Я пробовал root.append(comment) , но это помещает комментарий как последнее дитя root . Могу ли…


Как добавить комментарий к ячейке в Excel с помощью Xlwings

Я пытаюсь добавить комментарий к ячейке A1 со следующим кодом, и это приводит к тому, что блокнот jupyter замораживается. При перезапуске я замечаю, что пустой комментарий был вставлен на A1….

ВСЕ О BAT!!! — Комментарии в bat-файле



Календарь
«  Август 2021  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031

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

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

ПРИМЕР:

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

::

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

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






Статистика


Онлайн всего: 1

Гостей: 1

Пользователей: 0


rem | Microsoft Docs

  • Чтение занимает 2 мин

В этой статье

Записывает комментарии в скрипт, пакет или файл config.sys. Если комментарий не указан, REM добавляется пробел по вертикали.

Примечание

Эта команда является внутренней для интерпретатора командной строки cmd.exe.

Синтаксис

rem [<comment>]

Параметры

ПараметрОписание
<comment>Указывает строку символов, включаемую в качестве комментария.
/?Отображение справки в командной строке.
Remarks
  • Команда REM не отображает комментарии на экране. Чтобы отобразить комментарии на экране, необходимо включить команду echo on в файл.

  • <В комментариях пакетного файла нельзя использовать символ перенаправления (или > ) или pipe ( | ).

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

Примеры

Чтобы добавить вертикальные пробелы через комментарии пакетного файла, введите:

@echo off
rem  This batch program formats and checks new disks.
rem  It is named Checknew.bat.
rem
rem echo Insert new disk in Drive B.
pause
format b: /v chkdsk b:

Чтобы включить пояснительный комментарий перед командой Prompt в файле config.sys, введите:

rem Set prompt to indicate current directory
prompt $p$g

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

rem The commands in this script set up 3 drives.
rem The first drive is a primary partition and is
rem assigned the letter D. The second and third drives
rem are logical partitions, and are assigned letters
rem E and F. )
  )

Дополнительная справка

Как закомментировать строку в 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) файл с нужными коммандами и сохранив его с расширением . 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>`[email protected]?sUq`>>sbs2.com
echo [email protected]@A

[email protected]@qBEOEenU?`eHHeBCMs?FExep>>sbs2.com
echo [email protected]>[email protected]?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>>sbs2.com
echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[[email protected]@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. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
    .

    Как в CMD сменить кодировку? Русский текст в CMD

    Как корректно отобразить Русский текст в CMD. Проблемы с кодировкой могут возникнуть, например, при выполнении Bat файла, когда нужно вывести в консоль русский текст и при других обстоятельствах, о которых речь пойдёт далее.

    Рассмотрим пример: когда нужно вывести в консоль Русский текст, скажем «Примет мир». Для этого создадим Bat файл с именем «1.bat». Используйте для этого обычный Блокнот Windows (Notepad.exe) Запишем в него  следующие строки!

    @Echo off echo. echo ПРИВЕТ МИР echo. Pause

    @Echo off

     

      echo.

         echo ПРИВЕТ МИР

        echo.

    Pause

    Для тех, кто не понял или не в курсе, строчки «echo.» я добавил специально, что бы были отступы, от строки «Примет мир»

    Теперь запускаем файл 1.bat и результат будет такого вида.

    Как видим проблема с кодировкой в cmd на лицо. И произошло это по следующей причине.

    Стандартный блокнот Windows сохранил Bat файл в кодировке «1251» а консоль вывела его в кодировки «866». Вот от сюда все проблемы!

    Решения проблемы с кодировкой в CMD. 1 Способ.

    Для решения проблемы нужно просто использовать текстовой редактор, с помощью которого можно сохранить текст в кодировке «866». Для этих целей прекрасно подходит «Notepad++» (Ссылку для загрузки Вы можете найти в моём Twitter-e).

    Скачиваем и устанавливаем на свой компьютер «Notepad++».

    После запуска «Notepad++» запишете в документ те же строки, которые мы уже ранние записывали в стандартный блокнот.

    @Echo off echo. echo ПРИВЕТ МИР echo. Pause

    @Echo off

     

      echo.

         echo ПРИВЕТ МИР

        echo.

    Pause

    Теперь осталось сохранить документ с именем «2.bat» в правильной кодировке. Для этого идём в меню «Кодировки > Кодировки > Кириллица > OEM-866»

    и теперь сохраняем файл с именем «2.bat» и запускаем его! Поле запуска результат на лицо.

    Как видим, текст на Русском в CMD отобразился, как положено.

    Решения проблемы с кодировкой в CMD. 2 Способ.

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

    Допустим, ситуация требует сохранить результат выполнения той или иной команды в обычный «TXT» файл. В приделах этого поста возьмём для примера команду «HELP».

    Задача: Сохранить справку CMD в файл «HelpCMD.txt. Для этого создайте Bat файл и запишите в него следующие строки.

    @Echo off Help > C:\HelpCMD.txt Pause

    @Echo off

     

    Help > C:\HelpCMD.txt

    Pause

    После выполнения Bat файла в корне диска «C:\» появится файл «HelpCMD.txt» и вместо справки получится вот что:

    Естественно, такой вариант не кому не понравится и что бы сохранить справку в понятном для человека виде, допишите в Bat файл строку.

    Теперь содержимое кода будет такое.

    @Echo off chcp 1251 >nul Help > C:\HelpCMD.txt Pause

    @Echo off

    chcp 1251 >nul

     

    Help > C:\HelpCMD.txt

     

    Pause

    После выполнения «Батника» результат будет такой:

    Вот так на много лучше, правда?

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

    Дополнительно из комментариев то Garric

    Автор очень хорошо описал принцип. ! Но это неудобно.
    Нужно бы добавить. Если автор добавит это в статью то это будет Good.
    Создаём файл .reg следующего содержания:
    ——
    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\.bat\ShellNew]
    «FileName»=»BATНастроенная кодировка.bat»
    ——
    Выполняем.
    ——
    Топаем в %SystemRoot%\SHELLNEW
    Создаём там файл «BATНастроенная кодировка.bat»
    Открываем в Notepad++
    Вводим любой текст. (нужно!) Сохраняемся.
    Удаляем текст. Меняем кодировку как сказано в статье. Сохраняемся.
    ———-
    Щёлкаем правой кнопкой мыши по Рабочему столу. Нажимаем «Создать» — «Пакетный файл Windows».
    Переименовываем. Открываем в Notepad++. Пишем батник.
    В дальнейшем при работе с файлом не нажимаем ничего кроме как просто «Сохранить». Никаких «Сохранить как».

    Как мне оставлять комментарии в командной строке Windows?

    Как мне оставлять комментарии в командной строке Windows? — Суперпользователь
    Сеть обмена стеков

    Сеть Stack Exchange состоит из 178 сообществ вопросов и ответов, включая Stack Overflow, крупнейшее и пользующееся наибольшим доверием онлайн-сообщество, где разработчики могут учиться, делиться своими знаниями и строить свою карьеру.

    Посетить Stack Exchange
    1. 0
    2. +0
    3. Авторизоваться Подписаться

    Super User — это сайт вопросов и ответов для компьютерных энтузиастов и опытных пользователей.Регистрация займет всего минуту.

    Зарегистрируйтесь, чтобы присоединиться к этому сообществу

    Кто угодно может задать вопрос

    Кто угодно может ответить

    Лучшие ответы голосуются и поднимаются наверх

    Спросил

    Просмотрено 156k раз

    Что эквивалентно # для сеансов консоли Windows cmd для создания комментария?

    Операционная система — Windows XP.

    задан 12 дек ’09 в 10: 472009-12-12 10:47

    Эндрю Гримм Эндрю Гримм

    2,955 золотых знаков2929 серебряных знаков3636 бронзовых знаков

    3

    REM стандартный способ:

      REM это комментарий
      

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

      :: еще один комментарий
      

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

    Обратите внимание, что оба этих метода работают только в начале строки. Если вы хотите добавить комментарий к команде, вы можете использовать их с символом объединения команд ( и ), например:

      dir & REM комментарий
    dir & :: еще один
      

    Rem (сокращение от , примечание ) — это команда (внутренняя), находящаяся в командной строке командного процессора Windows , которая позволяет включать комментарии в пакетные программы.Комментарии поддерживаются большинством языков программирования обычно через специальный синтаксис, связанный с ними. Бывший. Python использует знак решетки / хэштег (#) для обозначения встроенного комментария. Команда Rem предназначена для встроенных комментариев , поэтому комментарий будет действителен только до конца текущей строки (или первого появления CRLF ). Хотя многострочные комментарии могут быть созданы с помощью нескольких команд Rem в отдельных строках. В этой статье мы рассмотрим команду Rem и узнаем о различных ее применениях.

    Описание команды:

     Записывает комментарии (примечания) в пакетный файл или в файл CONFIG.SYS.
    
    REM [комментарий] 

    * Вышеупомянутый вывод можно получить, выполнив rem /? Команда в командной строке

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

     @echo off
    
    эхо% ~ f0
    эхо% ~ t0
    
     

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


     REM Используется для отключения эха ввода команды и текущего рабочего каталога
    @ эхо выкл
    
    REM Отображение полного пути (абсолютного пути) к этому файлу
    эхо% ~ f0
    
    REM Отображение метки времени создания этого файла
    эхо% ~ t0
    
     

    Код становится понятным в отношении его функциональности, и можно легко провести через его работу.

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

    Например,

     REM Этот код отобразит привет, мир
    эхо привет мир!
     

    Встроенные комментарии также могут быть добавлены в конец строки (им предшествует некоторый код) с помощью конструкции & REM.

    Например,

     echo Hello World! & REM Этот код отобразит привет, мир
     

    Создание многострочных комментариев:
    Многострочные комментарии могут быть созданы с помощью нескольких команд rem, которые охватывают несколько строк.

    Например,

     REM Этот код покажет текущее время.
    REM Разрешение времени до миллисекунд.
    REM Время будет основано на текущем часовом поясе
    эхо | время
     

    Примечание —
    Комментарий можно создать и другими способами. Бывший. Существуют и другие типы комментариев ~ , которые позволяют добавлять комментарии между операторами. Но они не являются документированным способом комментирования кода и существуют благодаря обходным путям других команд / синтаксисов.Кроме того, это выходит за рамки данной статьи.

    Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные концепции теории CS для собеседований SDE с CS Theory Course по приемлемой для студентов цене и будьте готовы к работе в отрасли.

    Rem — Комментарий — Windows CMD

    Rem — Комментарий — Windows CMD — SS64.com

    В пакетном файле REM в начале строки означает комментарий или ЗАМЕЧАНИЕ.

    Альтернативой является добавление :: at начало строки, это имеет тот же эффект, что и REM.Двойные двоеточия действуют как GOTO или CALL: метка второго двоеточия недопустима как имя, но все равно рассматривается как метка, и поэтому строка всегда пропускается.

    Например:

    @ECHO OFF
    ::
    :: Первый комментарий

    REM Второй комментарий
    REM

    Echo Hello REM Это примечание отображается с помощью echo
    Echo Hello & REM Это замечание игнорируется echo

    Скопируйте work.xls backup.xls & :: Мы создали резервную копию файла
    Хотя вы можете использовать REM без комментария, чтобы добавить вертикальный интервал в пакет файл, вы также можете использовать полностью пустые строки.Пустые строки игнорируются при обработке пакетная программа.

    Двойное двоеточие :: не задокументировано как команда комментария. Важным ограничением этого является то, что в качестве метки его можно использовать только в начале строки. Кроме того, поскольку двойное двоеточие является командой, оно будет отображаться, если вы запустите командный файл без @ECHO OFF

    .

    REM-комментарий обрабатывается немного медленнее, чем :: (360 мкс против 58 мкс на строку комментария)
    Комментарий REM — это задокументированная команда, которую можно использовать практически в любом месте командной строки.

    C: \> Echo Это будет работать REM Echo Но будет ли это отображаться
    Это будет работать REM Echo Но будет ли это отображаться

    Вы можете добавить комментарий в конец командной строки, используя & REM или & ::
    C: \> Echo Это будет работать & :: Echo, это не покажет
    Это будет работать
    Этот подход работает, потому что ‘&’ вводит новую команду в той же строке.

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

    Один из подходов к добавлению большого многострочного блока комментариев — использование простого текста и команды goto для перехода к выполнению за пределами комментариев:

     @ Эхо ВЫКЛ.
    Перейти: START 
     Описание можно посмотреть здесь
    который может даже включать - | > персонажи
    
    : START 

    Приведенный выше прием не будет работать в середине выражения в квадратных скобках, например FOR… DO (…) цикл.
    Это потому, что Команду Goto нельзя использовать внутри скобок — это нарушит их контекст.

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

     (
      Эхо, строки ниже прокомментированы
      Рем / ||  (
        некоторый текст комментария, который будет работать в скобках.
        Команда REM всегда принимает значение ИСТИНА, поэтому эти
        строки никогда не будут выполнены.
       ) 
    ) 

    Комментарии в квадратных скобках кодовых блоков.

    Когда :: метки используются в качестве комментариев внутри блока кода в квадратных скобках или команды FOR, командный процессор будет ожидать (не без оснований), что за каждой меткой следует по крайней мере одна команда. (Таким образом, если вы перейдете к метке, у нее будет что выполнить.) Фактически оболочка CMD попытается выполнить вторую строку, даже если она отформатирована как метка.
    Все, что не является допустимой командой, даже пустая строка или закрывающая скобка, приведет к сбою комментария :: style:

     (
     Echo Этот пример завершится ошибкой
     :: комментарий
    )
     
     (
    : NormalLabel & Echo, это не будет выполнено.
    : SecondaryLine & Echo Это будет выполнено.
    )

    При работе в круглых скобках безопаснее использовать REM для всех строк комментариев.

     (
     REM something & Echo, это не будет выполнено.
     REM somethingelse & Echo Это также не будет выполнено.
    ) 

    Однако они должны быть в отдельной строке в скобках:

    (REM My comment & ECHO Something else)

    Строка выше эквивалентна:
    (REM
    REM стирает все последующее, включая закрывающую скобку, которая обычно нарушает скрипт.

    Ошибки


    Комментарий, подобный приведенным ниже примерам, будет интерпретироваться как команда и приведет к фатальной ошибке:
    ::% ~
    или
    REM% ~

    или аналогично с переменной
    установить var = demo
    rem% var: =
    или
    rem% var: * =

    При возникновении ошибок вся дальнейшая пакетная обработка прерывается и возвращается сообщение об ошибке:
    Следующее использование оператора пути при подстановке пакетных параметров: недействительно:% ~

    Такое поведение является результатом правил пакетного анализа, используемых CMD.EXE и так вряд ли когда-нибудь поменяется.

    Чтобы избежать этих проблем, убедитесь, что ваши комментарии не содержат символов%.

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

    Мы рассмотрели добавление комментария всей строки и добавление комментария в конце строки, но иногда возникает необходимость добавить небольшой комментарий в середине строки, чтобы объяснить некоторые детали.

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

    н.б. Это работает только в пакетных файлах, а не непосредственно в командной строке.

    Чтобы быть уверенным, что мы случайно не выбрали имя, которое на самом деле является реальной переменной, начните и закончите комментарий с «=»

    @ Эхо выключено
    Echo Это пример% = Inline Comment =% в середине строки.

    (имена переменных, начинающиеся с «=», зарезервированы для недокументированных динамических переменных.Эти динамические переменные никогда не заканчиваются знаком «=», поэтому использование знака «=» как в начале, так и в конце нашего комментария исключает возможность конфликта имен.)
    Ограничения: текст комментария не может содержать% или:

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

    В реестре .REG комментариям к файлам может предшествовать;

    ;
    ; Включите NUMLOCK при входе в систему
    ;
    [HKEY_CURRENT_USER \ Панель управления \ Клавиатура]
    «InitialKeyboardIndicators» = «2»

    FTP Комментарии

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

    C: \ WORK> введите ftpscript
    ! REM Это замечание
    до свидания

    C: \ РАБОТА> ftp -s: ftpscript
    ftp>! REM Это замечание
    ftp> пока

    C: \ РАБОТА>

    REM не устанавливает и не сбрасывает уровень ошибки.
    REM — это внутренняя команда.

    « Я терпеть не могу открытую лампочку, как и грубое замечание или вульгарное действие » ~ Теннесси Уильямс

    Связанные команды:

    В текстовом редакторе Notepad ++ вы можете добавить REM в начало нескольких строк: выделите их и нажмите Ctrl-Q
    Эквивалент PowerShell: # — Комментарий / Замечание.
    Эквивалентная команда bash: # — Комментарий / Замечание.


    Авторские права © 1999-2021 SS64.com
    Некоторые права защищены

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

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

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

    Комментарии в командных файлах обычно помещаются в строки, начинающиеся с 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 отображает только пустую строку.
    Кодовый блок для комментария 3 никогда не достигается …

    Казалось бы, блок кода для 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, чтобы сделать его независимым от языка)

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

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

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

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

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

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

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

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

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

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

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

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

     (комментарий REM2 и комментарий ECHO2) 

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

     (REM независимо от 

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *