Вопрос или проблема
Какой эквивалент команды 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, а также как обеспечить его открытие в случае, если ещё ни одно окно не запущено. Убедитесь, что все пути и параметры корректны для вашей рабочей среды и задач. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.