xcopy работает только если я использую /F для отображения полных имен файлов

xcopy работает только если я использую /F для отображения полных имен файлов

Сначала я просто использовал copy, но получил такой результат:

C:\repos\AutomatedBuildTesting (master -> origin)
(2020-09-18  8:49:01.12) λ copy ".hooks/*" ".git/hooks/*"
commit-msg
The system cannot find the file specified.
        0 file(s) copied.

Итак, я попробовал xcopyи, попробовав несколько вещей, в конце концов обнаружил, что копирование будет происходить только если я включу флаг Fдля отображения полных имен файлов. Может кто-нибудь объяснить это?

C:\repos\AutomatedBuildTesting (master -> origin)
(2020-09-18  8:48:32.95) λ xcopy ".hooks/*" ".git/hooks/*"
0 File(s) copied

C:\repos\AutomatedBuildTesting (master -> origin)
(2020-09-18  8:48:58.07) λ xcopy ".hooks/*" ".git/hooks/*" /F
Overwrite C:\repos\AutomatedBuildTesting\.git\hooks\commit-msg (Yes/No/All)? y
C:\repos\AutomatedBuildTesting\.hooks\commit-msg -> C:\repos\AutomatedBuildTesting\.git\hooks\commit-msg
1 File(s) copied

решение1

Вы пишете свои пути с /вместо \. Если вы измените их на \это должно работать. Я не могу сказать вам точно, почему это работает с /f и не работает без, но я знаю по опыту, что с путями, записанными как /вместо \это обрабатывается по-другому.

Я предполагаю, что когда включен параметр, cmd способен определить, что /это часть пути, а не параметр, и, следовательно, правильно обработать команду.

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