Выполнение определенной команды XCOPY без взаимодействия с пользователем

Я пытаюсь запустить следующую команду в Windows CLI:

XCOPY Z:\.vimrc %USERPROFILE%\_vimrc /H

/H часть должна быть там, потому что Z:\.vimrc это скрытый файл

Когда я запускаю команду выше, я получаю следующее сообщение:

Does C:\Users\Matt\_vimrc specify a file name
or directory name on target
(F = file, D = directory)?

Эта команда в конечном итоге будет частью файла BAT, и я не хочу, чтобы это приглашение. Ответ на это всегда "F".

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

XCOPY Z:\.vimrc %USERPROFILE%\ /H
XCOPY Z:\.vimrc %USERPROFILE% /H /I

Но это не так, я не могу. Как мне подавить это сообщение?

Я знаю, что могу скопировать его с тем же именем файла и затем переместить его, но давай, это действительно должны быть две команды? Я просто копирую файл.

Примечание: когда уже есть %USERPROFILE%\_vimrc файл, сообщение не появляется.

3 ответа

Решение

Тьфу.

echo F | XCOPY Z:\.vimrc %USERPROFILE%\_vimrc /H

Hack:

type Z:\.vimrc > "%USERPROFILE%\_vimrc"

Я действительно не вижу проблемы с переименованием потом

xcopy Z:\.vimrc %USERPROFILE%\ /H && ren %USERPROFILE%\.vimrc _vimrc

Если существует вероятность того, что файл уже существует:

if NOT EXIST %USERPROFILE%\_vimrc (
    xcopy Z:\.vimrc %USERPROFILE%\ /H && ren %USERPROFILE%\.vimrc _vimrc
) ELSE (
    del %USERPROFILE%\_vimrc
    xcopy Z:\.vimrc %USERPROFILE%\ /H && ren %USERPROFILE%\.vimrc _vimrc
)
Другие вопросы по тегам