Синтаксис перенаправления пакетного сценария
Однажды я написал ответ с примером пакетного сценария, и кто-то заметил, что легче читать echo'd логику в пакетных сценариях, когда вы перенаправляете вывод в файл, если вы сначала перенаправляете файл, а затем Команда, текст и т. Д. (Ниже примеры [1] ).
Это предложение не упоминало о какой-либо причине, почему вы не хотели бы этого делать, хотя я начал немного расследовать, поскольку я всегда ищу собственные методы, чтобы держать вещи немного чище.
Пример обычного способа
- Как полностью отключить использование файла подкачки wmic
- Инструмент командной строки для установки тега msspecific «рейтинг» в jpeg
- Дамп содержимого командной строки cmd в файл из пакетного файла
- Заставить Chrome открывать URL-адреса в качестве URL-адресов вместо поиска
- Восстановить загрузчик Windows 10
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
VER | TIME > LOG1.LOG
> LOG1.LOG VER | TIME
> LOG1.LOG VER | TIME
Как вы заметили, во второй строке это вывод VER, который перенаправляется на LOG1.LOG !! Как правило: не используйте эту технику в командных строках, которые также содержат другие перенаправления.
источник
-
- Windows упрямо сокращает файл подкачки
- FileZilla не работает на сервере Server 2008 R2
- Как открыть консольное приложение с заданным размером окна?
- Как запустить исполняемые файлы с помощью командной строки с именами пространства с именами и без запуска программы ожидания командной строки?
- Ошибка загрузки PXE на предустановленную GRUB без сообщения об ошибке
- Запускать программы через командную строку, но только если она еще не запущена
- Ошибка ввода: нет никакого механизма сценария для расширения файла ".vbs"
- Удалить USB-устройство из командной строки
Я всегда ищу собственные методы, чтобы вещи выглядели немного чище.
Вот еще одна альтернатива, что (для меня) еще более читаемо:
( 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%"
Он также более удобен в обслуживании, так как гораздо проще включать / выключать перенаправление, если это необходимо, поскольку это делается в одном месте.