Синтаксис перенаправления пакетного сценария

Однажды я написал ответ с примером пакетного сценария, и кто-то заметил, что легче читать 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 VER | TIME > LOG1.LOG > LOG1.LOG VER | TIME > LOG1.LOG VER | TIME

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

    источник

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

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

 ( 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%" 

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

  • Можно ли обновить Windows 8.1 до последней версии?
  • Как остановить процентное расширение в пакетном файле?
  • Переместить все файлы типа в новую папку в Windows 7
  • Создание папки из первых 5 символов имени файла в пакетном файле
  • Подключение к VPN с помощью командной строки приводит к ошибке 691
  • Как запустить пакетный скрипт перед входом в систему?
  • Установка нескольких переменных среды в оболочке, созданной через пакетный скрипт Windows
  • Есть ли инструмент, который может определять тип файла из данных?
  • Bat-файл, чтобы отключить адаптер ethernet, а затем повторно использовать его после входа в Windows
  • Как определить текущий каталог в пакетном файле
  • Извлеките все Zip в каталог (включая вложенные папки) с файлом .bat или командой dos
  • Interesting Posts

    Sublime Text 2 / Windows: запуск из командной строки?

    Возвращаемое значение в функции из блока обещаний

    Могу ли я объявлять переменные разных типов при инициализации цикла for?

    PrimeFaces валидатор не запущен

    Каков самый длинный путь к файлу, который может обрабатывать Windows?

    Идентификатор ASP.NET – несколько наборов объектов для каждого типа не поддерживаются

    Как просмотреть историю буфера обмена в OS X?

    Как использовать аудиовыход устройства отображения HDMI без расширения рабочего стола на этом устройстве?

    Как перенаправить вывод обратно на экран после freopen («out.txt», «a», stdout)

    ошибка установки пакета с ошибкой проверки сертификата SSL

    JSON.NET Parser * кажется * будет двойной сериализацией моих объектов

    Как добавить подпись по умолчанию в Outlook

    Как получить услугу «net send» для работы в Windows 7?

    Как отключить автоматическое открытие PDF-файлов в chrome

    Могу ли я повторно подписать .apk с другим сертификатом, чем тот, с которым он пришел?

    Давайте будем гением компьютера.