Как заменить операцию печати в пакетном режиме на сообщение?

Как заменить операцию печати в пакетном режиме на сообщение?

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

@ECHO OFF
ECHO D | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Code Snippets" ".\Backup\Code Snippets" /s /q /y
ECHO D | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects" ".\Backup\Projects" /s /q /y
ECHO D | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Templates" ".\Backup\Templates" /s /q /y

Я хочу сделать так, чтобы сообщение отображалось примерно так:«Выполняется резервное копирование...»вместо каждой операции, показывающей. Я пробовал комбинации PRINT, ECHO, и даже CLSдля замены содержимого окна, но я не могу заставить это работать. Что я упускаю? Я видел, что другие пакетные скрипты делают это(из которого мне больше не нужно делать заметки)и хотел бы сделать то же самое.

решение1

Добавлено перенаправление по вашему выбору в конце, которое не находится на STDOUT. Например, >nulили >file.txtи соответствующие операторы echo. Вы не сможете показать прогресс во время выполнения таким xcopyобразом.

echo "Copy in progress"
xcopy > nul
echo "Copy finished"

Обработка ошибок и т. п. в этом случае может оказаться более сложной.

решение2

Использовать

  1. префикс команды @, чтобы не показывать одну команду;
  2. echo offчтобы избежать показа всех будущих команд (до повторного включения).

Чаще всего это объединяется в @echo offсамый первый пункт вашего сценария.

Связанный контент