4

Однажды я написал ответ с примером пакетного сценария, и кто-то указал, что логику echo'd легче читать в пакетных сценариях, когда вы перенаправляете вывод в файл, если сначала перенаправить в файл, а затем поместить команда, текст и т. д. (ниже примеров [1]).

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


Пример обычного пути

IF EXIST "%tmpfile%" DEL /Q /F "%tmpfile%"
ECHO Some Text Here>>"%tmpfile%"
ECHO A little more text here>>"%tmpfile%"
ECHO Some other text over here man>>"%tmpfile%"
ECHO Can Scooby please have a Scooby snack>>"%tmpfile%"

Пример легче читать

IF EXIST "%tmpfile%" DEL /Q /F "%tmpfile%"
ECHO>>"%tmpfile%" Some Text Here
ECHO>>"%tmpfile%" A little more text here
ECHO>>"%tmpfile%" Some other text over here man
ECHO>>"%tmpfile%" Can Scooby please have a Scooby snack

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

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


Вопрос

Этот вопрос может быть задан специалистам по пакетным сценариям Windows или кому-то, кто использовал этот метод в течение некоторого времени или провел тщательное тестирование, но. , ,

  1. кроме одной проблемы (множественные перенаправления [2]), чтобы не использовать этот синтаксис, есть ли другие проблемы, причины или ошибки, которые вы должны рассмотреть заранее?

Рекомендации

  • Перенаправление [1]

    • ПРИМЕЧАНИЯ: (3)

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

      Однако, если бы вы делали это с командными строками ECHO, пробелы действительно были бы ECHOed, что не всегда удобно, если не сказать больше.

      На веб-сайте Марка Стерна я нашел отличное решение: просто разместите перенаправления перед фактическими командами.

      Возьмите этот воображаемый пакетный файл, например:

      ECHO Directory of all files on C: >> LOG1.LOG

      DIR C:\ /S >> LOG1.LOG

      Не совсем легко на глаз, тот?

      Тогда как насчет этого?

      >> LOG1.LOG ECHO Directory of all files on C:

      >> LOG1.LOG DIR C:\ /S

      Это будет делать то же самое, без разницы! Намного лучше, не так ли? Но теперь попробуйте это:

      VER | TIME > LOG1.LOG > LOG1.LOG VER | TIME

      Как вы заметите, во второй строке вывод VER перенаправляется на LOG1.ЖУРНАЛ !! Как правило: не используйте эту технику в командных строках, которые также содержат другие перенаправления.

    источник

1 ответ1

6

Я всегда ищу нативные методы, чтобы выглядеть немного чище.

Вот еще один вариант, который (для меня) еще более читабелен:

(
ECHO Some Text Here
ECHO A little more text here
ECHO Some other text over here man
ECHO Can Scooby please have a Scooby snack
)>>"%tmpfile%"

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .