客观的:复制所有子文件夹内容测试环境对其本身而言。
从
C:\TestEnv\Folder1\*
C:\TestEnv\Folder1\Testfile1.txt
C:\TestEnv\Folder1\Testfile2.tpdf
C:\TestEnv\Folder2\*
C:\TestEnv\Folder2\Testfile3.txt
C:\TestEnv\Folder2\Testfile4.pdf
到
C:\TestEnv\
C:\TestEnv\Testfile1.txt
C:\TestEnv\Testfile2.tpdf
C:\TestEnv\Testfile3.txt
C:\TestEnv\Testfile4.pdf
我目前所拥有的...
$Exclude = 'C:\TestEnv\Scripts','C:\TestEnv\TestFiles' 复制项目-排除$Exclude-路径“C:\TestEnv\*\*”-目标“C:\TestEnv”-Recurse
答案1
由于-Exclude
没有获取数组,请尝试以下操作:
$Exclude = 'C:\TestEnv\Scripts','C:\TestEnv\TestFiles'
Get-ChildItem -Path "C:\TestEnv\*" -directory |
where {$_.fullname -notin $Exclude} |
Get-ChildItem -Recurse -File |
Foreach {
Copy-Item -LiteralPath $_.Fullname -Destination "C:\TestEnv\" -force
}
这里:
- 将排除数组定义为
$Exclude
。 Get-ChildItem
使用并切换来过滤源目录-Directory
。- 使用 过滤排除目录
where
。 - 再次仅列出带有
-File
和 递归的文件-Recurse
。 - 然后在循环中
Copy-Item
强制(-Force
可省略)Foreach
传输文件。