#powershell #copy-item
#powershell #copy-item
Вопрос:
Я пытаюсь скопировать папку в другое место с помощью powershell только с определенными дочерними элементами формата файла.
У меня есть папка ec-alert-service
, в которой есть вложенные папки и файлы, в ней есть один .txt
файл. Я хочу скопировать эту папку в другое место только с этим txt
файлом
Итак, я написал эту команду, но она копирует не текстовый файл, а просто пустую папку. Так что в основном -Filter
это не работает
Copy-Item -Path D:PawanGitlabec-alert-service -Filter *.txt -Destination D:PawanGitlabBuildFiles
Что я делаю не так?
Комментарии:
1. Вы пробовали добавлять -Recurse ?
2. Попробуйте это:
Copy-Item -Path D:PawanGitlabec-alert-service* -Filter *.txt -Destination D:PawanGitlabBuildFiles
3. @GertJanKraaijeveld — он просто скопировал файл, но не папку.
4. @PalleDue — Да. Recurse скопировал все
Ответ №1:
$splatPrm = @{
sourceDirectory = "d:tmp01"
destinationDirectory = "D:tmp02"
wildCardArray = @("*.txt") # or @("*.txt", "*.csv") or other
}
amp; {
param(
[System.IO.DirectoryInfo]$sourceDirectory,
[System.IO.DirectoryInfo]$destinationDirectory,
[string[]]$wildCardArray
)
$pathToCopy = [System.IO.Path]::Join($destinationDirectory.FullName, $sourceDirectory.Name)
if (-not [System.IO.Directory]::Exists($pathToCopy)){
[System.IO.Directory]::CreateDirectory($pathToCopy)
}
foreach ($wildCard in $wildCardArray){
foreach ($file in $sourceDirectory.GetFiles($wildCard)){
$file.CopyTo([System.IO.Path]::Join($pathToCopy, $file.Name))
}
}
} @splatPrm