Ich habe zunächst nur verwendet copy
, aber diese Ausgabe erhalten:
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.
Also habe ich es versucht xcopy
und nachdem ich ein paar Dinge ausprobiert hatte, stellte ich schließlich fest, dass es nur kopiert wird, wenn ich das F
Flag zum Anzeigen vollständiger Dateinamen einfüge. Kann das jemand erklären?
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
Antwort1
Du schreibst deine Pfade mit /
statt \
. Wenn du sie in änderst, \
sollte es klappen. Ich kann dir nicht genau sagen, warum es mit /f klappt und ohne nicht, aber ich weiß aus Erfahrung, dass Pfade, die als /
statt geschrieben werden \
, anders gehandhabt werden.
Ich gehe davon aus, dass cmd bei der Angabe eines Parameters erkennt, dass es /
sich um einen Teil eines Pfads und nicht um einen Parameter handelt, und den Befehl daher korrekt behandelt.