Сначала я просто использовал 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 способен определить, что /
это часть пути, а не параметр, и, следовательно, правильно обработать команду.