
Я работаю над простым инструментом, который копирует файлы в нужные места и из них, и я хочу заменить вывод в 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
Использовать
- префикс команды
@
, чтобы не показывать одну команду; echo off
чтобы избежать показа всех будущих команд (до повторного включения).
Чаще всего это объединяется в @echo off
самый первый пункт вашего сценария.