powershell - Powershell脚本查找文件夹并复制到另一个文件夹
问题描述
我有一个很长的目录路径。嵌套文件夹值根据项目名称不断变化。但是最后一个目录 PackageTmp 没有改变,期待将 PackageTmp 中的文件复制到另一个目录。我想将所有子文件夹和文件从 C:\unzip\Content\D_C\a\1\s\src\prj\obj\Release\Package\PackageTmp 复制到 C:\deploy。我的代码正在复制到 C:\deploy\PackageTmp。
Source Dir :- C:\unzip\Content\D_C\a\1\s\src\prj\obj\Release\Package\PackageTmp
Inconsistent Path :- \D_C\a\1\s\src\prj\obj\Release\Package\
Target Dir :- C:\deploy\
Non working code :- Get-ChildItem C:\unzip\ -Filter PackageTmp -Recurse | where {($_.psiscontainer)}| Copy-Item -Destination C:\deploy\ -Recurse -filter * -Force
解决方案
分析
看起来你快到了。您的脚本只是找到PackageTmp
目录,然后将其传递到管道中,最终将其复制到目标,目录和内容都包括在内。诀窍是,一旦找到PackageTmp
目录,就可以使用通配符来获取PackageTmp
目录中的所有内容并将其复制到目的地。
代码
我调整了你的非工作代码,所以希望这对你有用。
# Get the PackageTmp directory
$PackageTmp = Get-ChildItem C:\unzip\ -Filter PackageTmp -Recurse | Where-Object {($_.psiscontainer)}
# Print the FullName of the PackageTmp directory
Write-Host "PackageTmp: $($PackageTmp.FullName)"
# Recursively copy everything in the PackageTmp directory to our destination directory
Copy-Item -Path "$($PackageTmp.FullName)\*" -Destination C:\deploy\ -Recurse -filter * -Force
解释
我将PackageTmp
位置存储在一个变量中。然后我可以指定我想PackageTmp
通过使用-Path "$($PackageTmp.FullName)\*"
参数复制目录内的所有内容,注意通配符的使用\*
。这不会PackageTmp
像您要求的那样复制目录。
如此有效地代替这样做:
Copy C:\unzip\Content\D_C\a\1\s\src\prj\obj\Release\Package\PackageTmp -> C:\deploy\
我们只是这样做:
Copy C:\unzip\Content\D_C\a\1\s\src\prj\obj\Release\Package\PackageTmp\* to C:\deploy\
推荐阅读
- python - 通过 Python 和 Django 问题从 Sheets API 中提取数据
- qt - 我可以使用 QApplication 和 QCoreApplication 吗?
- php - create($table) with pdo 错误 SQLSTATE[HY000] [2002] No such file or directory
- oracle - 如何在 Oracle 中将一个值与 2 个值进行比较
- c# - 当我在 S3 服务器上上传时,如何在 C# 中向 HttpRequestMessage.Headers 添加 content-md5 标头?
- python-3.x - 如何在不使用 Tensorboard 的情况下在 Tensorflow 中绘制损失曲线?
- javascript - 为什么我的模态返回网站后无法工作?
- wordpress - Visual Composer 编辑器块标签链接 css
- powershell - 如何在 Sitecore Powershell Extensions 中获取常规链接字段属性
- python - Python 从命令行运行运行 3.6 版,而在我的文件中它运行 3.4 版