У меня есть каталог Source с некоторыми файлами, которые я хотел бы скопировать в папку Destination. Адресат может существовать, и в нем уже могут быть файлы. Любые файлы с тем же именем, что и в Source, должны быть перезаписаны.
Если я запускаю это в Powershell:
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
Затем первая строка создает папку .\Destination
и копирует .\Source
в нее, что я хотел бы повторить в следующий раз. Однако вторая строка копирует .\Source
в новую .\Destination
папку (создает .\Destination\Source
), а затем третья строка перезаписывается .\Destination\Source
снова.
Как я могу заставить его действовать как в первом случае все время? То есть переписать .\Destination
вместо копирования в него?
windows-7
powershell
Дуглас
источник
источник
if exists
легко решит проблему и не потребует от вас принудительно рекурсивного удаления пункта назначения, что сопряжено со своими собственными опасностями.Ответы:
Так что проблема в том, что
работает только если
bar
не существует иработает только если
bar
существует. Таким образом, чтобы обойти, вы должны убедиться, чтоbar
существует, прежде чем делать что-либоисточник
Если вы хотите скопировать только содержимое папки «source», используйте
источник
destination
уже существует.Ответ Стивена Пенни https://superuser.com/a/742719/126444 не удаляет исходное содержимое целевого каталога, а просто добавляет к нему. Мне нужно было полностью заменить целевую папку с содержимым источника и создал 2 функции:
источник
Допустим, у вас есть следующая структура каталогов
корень
В корневой папке вы можете достичь желаемых результатов с помощью следующей последовательности команд:
$files = gci ./folder_b -name
cp ./folder_a/*.txt -Exclude $files ./folder_b
Только c.txt будет скопирован
источник