Как эквивалент команды Windows > cmd /k [закрыто]

Вопрос или проблема

Какой эквивалент команды Windows

user> cmd /k "robocopy C:\x C:\y" /njh /njs /ndl

для cmder в командной строке
которая запускает оболочку cmd и консоль/терминал одновременно, только если они еще не запущены, затем выполняет следующую команду (строку), а затем остается там
Пожалуйста, помогите

.

Ответ или решение

Для запуска команды в среде Cmder с открытием командной строки (cmd) и одновременным выполнением команды нужно учесть несколько моментов. Этот процесс схож с выполнением команды в Windows, но требует определённого подхода, чтобы обеспечить корректное выполнение.

В Windows используется следующая команда:

cmd /k "robocopy C:\x C:\y" /njh /njs /ndl

Эта команда запускает командную строку (cmd) и выполняет команду robocopy, а параметр /k говорит командной строке оставаться открытой после выполнения команды.

Для достижения аналогичного результата в Cmder, можно использовать следующий синтаксис:

cmd /c "robocopy C:\x C:\y /njh /njs /ndl && pause"

Объяснение параметров:

  • cmd: это команда для запуска командной строки Windows.
  • /c: указывает cmd завершить свою работу после выполнения команды. Но если вы хотите оставить окно открытым, можно использовать параметр /k, как следовало бы сделать в случае стандартной командной строки.
  • robocopy C:\x C:\y: это основная команда для копирования файлов от одной директории к другой.
  • /njh, /njs, /ndl: эти параметры указывают robocopy не выводить заголовки, статистику завершённых файлов и не отображать списки спомощью.
  • && pause: позволяет оставить окно открытым после выполнения команды, ожидая нажатия клавиши.

Открытие Cmder при отсутствии активного терминала

Если вы хотите, чтобы при запуске команды открывался новый экземпляр Cmder только в том случае, если ранее данный терминал не был открыт, вам понадобится немного более сложная логика скрипта.

Можно создать .bat файл с следующим содержимым:

@echo off
tasklist /FI "IMAGENAME eq Cmder.exe" | find /I "Cmder.exe" >nul
if not %errorlevel% == 0 (
    start cmder.exe
)
cmd /k "robocopy C:\x C:\y /njh /njs /ndl && pause"

Как это работает:

  • tasklist: этот инструмент отображает список запущенных процессов.
  • find: команда ищет процесс Cmder в списке задач.
  • if not %errorlevel% == 0: проверяет, запущен ли процесс. Если нет, выполняется команда start cmder.exe, которая запускает Cmder.
  • После этого выполняется команда cmd /k, как описано ранее.

Заключение

Теперь вы имеете полное понимание того, как запустить robocopy с сохранением активного окна в Cmder, а также как обеспечить его открытие в случае, если ещё ни одно окно не запущено. Убедитесь, что все пути и параметры корректны для вашей рабочей среды и задач. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...