我似乎在排除错误和在powershell中递归复制目录时遇到了麻烦。
我想以递归方式复制目录,但要包含与test.txt
匹配的任何文件。
我的源目录看起来像这样
运行以下命令会产生以下输出。它的副本排除了test.txt的第一个实例,但不包括第二个实例。我错过了什么?
我的剧本:
Get-ChildItem -Path .\TestDir -Recurse -Exclude test.txt | Copy-Item -Destination .\temporary -Recurse -Exclude text.txt
答案 0 :(得分:2)
我承认,我Nerd Sniped我自己也是这样做的,并且有一个“不会很难的井......”
问题似乎是,如果复制项目获得了目录的最轻微的气味,它只是复制整个事物而不考虑其中的内容,完全忽略了过程中的任何过滤概念!
在尝试解决过滤问题时,我偶然发现this excellent answer -
您的解决方案似乎是这样的 -
$source = "E:\PS\test-output\test"
$dest = "E:\PS\test-output\test1"
$exclude = @('test.txt')
Get-ChildItem $source -Recurse -Exclude $exclude `
| Copy-Item -Destination {Join-Path $dest $_.FullName.Substring($source.length)}
这会丢弃复制项目(看似脑死亡)的递归并建立自己的。