【发布时间】:2019-05-24 23:57:49
【问题描述】:
我正在尝试使用 PowerShell 脚本复制目录结构。我希望排除某个目录。
我的目录结构如下:
C:\
└───murks
├───murks_source
│ │ test1.txt
│ │ test2.txt
│ │
│ ├───sub
│ │ subtest1.txt
│ │ subtest2.txt
│ │ subtest3.txt
│ │
│ └───sub2
│ sub2test.txt
│
└───murks_target
现在,当我运行脚本时,它不会使用从属文件创建子目录“sub2”。相反,它将所有文件(也包括“sub2”子目录的文件)直接复制到 murks_target_directory 中。我不明白这种行为,因为“Select -ExpandProperty FullName”部分到目前为止看起来不错。
非常感谢任何帮助或提示。 提前致谢!
到目前为止,我的脚本如下所示:
$rootFolderPath = 'C:\murks\murks_source'
$excludeDirectories = ("sub");
function Exclude-Directories
{
process
{
$allowThrough = $true
foreach ($directoryToExclude in $excludeDirectories)
{
$directoryText = "*\" + $directoryToExclude
$childText = "*\" + $directoryToExclude + "\*"
if (($_.FullName -Like $directoryText -And $_.PsIsContainer) `
-Or $_.FullName -Like $childText)
{
$allowThrough = $false
break
}
}
if ($allowThrough)
{
return $_
}
}
}
Get-ChildItem $rootFolderPath -Recurse | Exclude-Directories | Select -ExpandProperty FullName | Copy-Item -Destination C:\murks\murks_target -Force
【问题讨论】:
-
问题是你的平面-Destination,Copy-Item 完全按照你的指示去做。
-
顺便说一句,不要重新发明轮子,使用
robocopy 'C:\murks\murks_source' 'C:\murks\murks_target' * /XD "sub" /S -
嘿伙计。也许通过你的选择当然并选择一个答案??????????
标签: powershell copy-item