Я написал огромный пакетный файл MS DOS. Чтобы протестировать этот командный файл, мне нужно выполнить только несколько строк и я хочу скрыть / закомментировать оставшиеся.
У меня есть некоторые существующие строки комментариев, начинающиеся с, ::
поэтому я больше не могу их использовать ::
, так как он скремблирует все комментарии.
Как я могу решить эту проблему?
batch-file
comments
dos
user219628
источник
источник
REM
строки в качестве строк комментариев, это делает вывод неяснымЕсли вы хотите добавить REM в начале каждой строки вместо использования GOTO, вы можете использовать Notepad ++, чтобы сделать это легко, выполнив следующие действия:
Повторите шаги, чтобы раскомментировать
источник
Ctrl-Q
, нажмите наNotepad++
:Edit -> Comment/Uncomment
.Хотя это
goto
решение является хорошим вариантом, оно не будет работать в квадратных скобках (включая команды FOR и IF), но это будет. Хотя вы должны быть осторожны закрывающих скобок и неправильного синтаксиса дляFOR
иIF
команд , так как они будут обрабатываться.Обновить
Обновление в ответе dbenham дало мне несколько идей. Во-первых, есть два разных случая, когда нам могут понадобиться многострочные комментарии - в контексте скобок, где GOTO нельзя использовать, и вне его. Внутри скобок контекста мы можем использовать другие скобки , если есть условие , которое предотвращает код будет executed.Though код thede по- прежнему будет проанализирован и будут обнаружены некоторые синтаксические ошибки (
FOR
,IF
, неправильно закрытые скобки, неправильное расширение параметра ..). Таким образом , если есть возможность, лучше использовать GOTO.Хотя невозможно создать макрос / переменную, используемую в качестве метки, но можно использовать макросы для комментариев в скобках. Тем не менее, можно использовать два трюка, чтобы сделать комментарии GOTO более симметричными и более приятными (по крайней мере, для меня). Для этого я использую два трюка: 1) вы можете поместить один символ перед меткой, и goto все равно сможет его найти (я понятия не имею, почему это так. Я думаю, он ищет диск). 2) вы можете поставить одиночный
:
символ в конце имени переменной, и функция замены / подстановки не будет активирована (даже при включенных расширениях). Это в сочетании с макросами для комментариев в скобках может сделать оба случая почти одинаковыми.Итак, вот примеры (в том порядке, в котором они мне нравятся больше всего):
С прямоугольными скобками :
С фигурными скобками :
В скобках :
Смесь между стилями powershell и C (
<
не может использоваться, потому что перенаправление с более высоким приоритетом.*
Не может использоваться из-за%*
):Чтобы emphase это комментарий (мысль не так коротка):
источник
rem.||(
илиrem^ (
вместо. Намерение немного яснее. Смотрите мой обновленный ответ.%rem:%
+%:rem%
форму, чтобы сделать ее более очевидной, хотя она потеряет свое очарование. Или только косая черта, чтобы быть ближе к C-стилю ...Другой вариант - заключить нежелательные строки в блок IF, который никогда не может быть истинным.
Конечно, внутри блока if ничего не будет выполнено, но будет проанализировано. Таким образом, у вас не может быть недопустимого синтаксиса внутри. Кроме того, комментарий не может содержать,
)
если он не экранирован или не заключен в кавычки. По этим причинам принятое решение GOTO более надежно. (Решение GOTO также может быть быстрее)Обновление 2017-09-19
Вот косметическое усовершенствование решения GOTO от pdub . Я определяю простой «макрос» переменной среды, который делает синтаксис комментариев GOTO немного лучше самодокументированным. Хотя обычно рекомендуется, чтобы метки: были уникальными в рамках пакетного сценария, действительно допустимо встраивать несколько комментариев, подобных этому, в один пакетный сценарий.
Или вы можете использовать один из этих вариантов решения npocmaka . Использование REM вместо BREAK немного проясняет замысел.
источник
Просто хочу отметить, что решение GOTO от pdub не совсем корректно в случае: метка комментария появляется несколько раз. Я изменяю код из этого вопроса в качестве примера.
Выход будет
Команда ECHO HERE HERE AT TD_NEXT В ПЕРВОМ БЛОКЕ пропускается.
источник
@jeb
И после этого stderr кажется недоступным
Нет, попробуйте это:
Но почему это работает?
извините, я отвечаю на вопрос по-французски:
(перенаправление из пункта 3> есть специальный автомобиль elle persiste, on va l'utiliser pour capturer le flux des erreurs 2> is on va le transformer en un flux persistant à l'ade de 3> ceci va nous permettre d'avoir une gestion des erreur pour tout notre environement de script..par la suite si on veux recuperer le flux 'stderr' il faut faire une autre redirection du handle 2> au handle 1> qui n'est autre que la console ..)
источник
попробуй это:
источник