我试图在for-eachobject
循环中找到当前正在操作的对象的路径。有人可以解释如何做到这一点?我正在尝试将Copy-Item
的源路径设置为文件所在的任何路径。这是我与Powershell合作的第一个项目。假设$ Src已被正确实例化。
Get-ChildItem -Path $Src -Recurse -Force | Where-Object {$_.Name -notmatch "Archive" -and ($_.PSIsContainer)}|
ForEach-Object {
$DateStr = $_.BaseName.Substring(0,2)+'/'+$_.BaseName.Substring(3,2)+'/'+$_.BaseName.Substring(6,4)
$FileDate = get-date $DateStr
If ( $FileDate -ge $Date -and !($_.PSIsContainer)) {
$ParentOjbect = $_.Directory
$Parent = $ParentOjbect.Name
Copy-Item -Path (Join-Path -Path $Src -ChildPath '\*.txt' ) #this
#needs to be corrected to only point to the current file
-Dest (Join-Path $Dst ("$($_.Directory.Name) $($_.Name)")) -WhatIf
}
}
答案 0 :(得分:2)
Copy-Item -Path (Join-Path -Path $_.FullName -ChildPath '\*.txt' )
我建议您也使用-WhatIf来检查它是否符合您的预期。
答案 1 :(得分:1)
$_
或$PSItem
(PowerShell 3.0+)访问管道中的当前对象。从这里,您可以访问其成员。