我在PS脚本方面还很新,所以我大部分的操作都是从示例中拼凑出来的。现在我想做的是在一个目录中搜索所有文件夹中的PDF文件,然后将它们重命名,并将父文件夹名称添加到文件名中。例如:
c:\export\123\notes\abc.pdf 将被重命名为 c:\export\123\notes\123_abc.pdf
其余的脚本已经可以正常工作,使用GhostScript将它们转换为TIF并将它们移动到另一台服务器。问题是所有的PDF文件都具有相似的名称,但是“123”文件夹对于文档来说是唯一的。以下是我已经拼凑出来的代码:
Get-ChildItem 'c:\export\' -Recurse *.pdf |
ForEach-Object {
$parent = $_.Parent
$grandparent = $parent.Parent
Rename-Item -NewName {$_.$grandparent + "_" + $_.Name}
}
脚本在“-NewName”参数处出现错误,我尝试过删除该参数但没有起作用。我尝试复制代码以添加父文件夹到文件名,但似乎无法同时找到祖父文件夹名称并将其添加到文件中。
$grandparent
,而不是$_.$grandparent
。后者是双重间接引用,会尝试访问项目的'123'属性。 - DuncanGet-ChildItem 'c:\export\' -Recurse *.pdf | ForEach-Object { $parent = $_.Parent $GrandParent = $_.fullname | Split-Path -Parent | Split-Path -Parent | Split-Path -Leaf Rename-Item -path $_.Fullname -newname "$GrandParent $_." }
- BillT