我的组织在整个网络的不同文件夹中都有很多图片文件。我一直想通过它们所在的项目文件夹将它们合并到“ PictureLibrary”文件夹中。由于这些项目文件夹中除了图片文件外还有其他文件,因此我不能只移动整个文件夹。我一直在尝试下面的代码:
($Images = gci "Z:\DivisionFolder" -Recurse -file -Include "*.jpg") |
Foreach-object {
copy-Item $_.DirectoryName -Destination "Z:\DivisionFolder\PictureLibrary"
}
$a=0
For ($a; $a -lt $Images.count; $a++){
move-item $Images[$a].fullname -Destination {join-path -Path "D:\(1) PROJECTS & PORTFOLIOS\PictureLibrary" -ChildPath $Images[$a].Directoryname}
}
我已经尝试过各种格式,但是出现此错误
Copy-Item:无法评估参数“目标”,因为其参数被指定为脚本块,并且没有输入。一种没有输入就无法评估脚本块。
而且我不知道如何在不将目标写为脚本块的情况下编写此代码
任何帮助将不胜感激
尝试像这样传递目标参数:
-Destination $(. { script_block_body_here })
()。 {}是点源运算符,$()是子表达式运算符。
($RougePictures = Get-Childitem -Path "C:\" -recurse -file -Include "*.JPG")|
Foreach-object {
copy-Item $_.DirectoryName -Destination "C:\Folders\PictureLibrary"
}
$MainFolders = get-childitem -Path "D:\(1) PROJECTS & PORTFOLIOS\PictureLibrary"
$a=0
For ($a; $a -lt $MainFolders.count; $a++) {
Foreach ($Rouge in $RougePictures){
if ((compare-object (split-path $Rouge.directoryname -leaf) $MainFolders[$a] -IncludeEqual).sideindicator -eq '=='){
move-item $Rouge.fullname -destination $MainFolders[$a].fullname
}
}
}
找到了解决方法,可以将脚本块用作目标参数。用过的if ((compare-object (split-path $Rouge.directoryname -leaf) $MainFolders[$a] -IncludeEqual).sideindicator -eq '==')
复制文件夹copy-Item $_.DirectoryName -Destination "C:\Folders\PictureLibrary"
以查找与图片所在的文件夹匹配的文件夹后。如果找到与'=='
匹配的文件夹,则move-item
将移动这些文件。希望这会有所帮助。