簡體   English   中英

Powershell 腳本查找文件夾並復制到另一個文件夾

[英]Powershell script to find a folder and copy to another folder

我有一個很長的目錄路徑。 嵌套文件夾值根據項目名稱不斷變化。 但是最后一個目錄 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位置存儲在一個變量中。 然后我可以使用-Path "$($PackageTmp.FullName)\*"參數指定我想復制PackageTmp目錄內的所有內容,注意通配符\*的使用。 這不會像您要求的那樣復制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\

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM