Однажды я написал ответ с примером пакетного сценария, и кто-то указал, что логику 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 или кому-то, кто использовал этот метод в течение некоторого времени или провел тщательное тестирование, но. , ,
- кроме одной проблемы (множественные перенаправления [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.ЖУРНАЛ !! Как правило: не используйте эту технику в командных строках, которые также содержат другие перенаправления.