2016-04-29 45 views
1
Get-ChildItem -Path "C:\WPDOCS-aa\0000-wpdocs 2015" -Filter "wpd" -Recurse | rename-item -NewName {$_.name-replace '.wpd', -2015.wpd'} 

PS C:\WPDOCS-aa\0000-wpdocs 2015> Get-ChildItem -Path "C:\WPDOCS-aa\0000-wpdocs 2015" -Filter "wpd" -Recurse | rename-item -NewName {$_.name-replace '.wpd', -2015.wpd'} 

我已经尝试了上述,它只是挂起。 我尝试这样做:在PowerShell中添加字符到文件名的底部

Get-ChildItem -Path "C:\WPDOCS-aa\0000-wpdocs 2015" -Filter "wpd" -Recurse | rename-item -NewName {"$($_.BaseName) -2015.wpd"} 

,它似乎完成(PowerShell的V5与W10 Pro的),但没有文件更改。 我想感谢这里的人为他们提供最初的帮助。

+0

我建议你将代码拆分成块,并确保Get-ChildItem能够实现这个功能,然后过滤器就完成它的工作,然后再添加重命名项 –

回答

0

备份你的文件,然后再尝试这样的:

Get-ChildItem -Path "C:\WPDOCS-aa\0000-wpdocs 2015" -Filter "*.wpd" -Recurse | % { rename-item -Path $_.FullName -NewName "$($_.BaseName)-2015.wpd" } 
2

有两个问题你的方法。

1)-Filter没有得到你想要的文件,因为你正在寻找名为“wpd”的文件。如果只提供部分文件名,则需要使用通配符。因为它听起来像你与.WPD扩展寻找文件具体而言,它会像这样:

Get-ChildItem -Path "C:\WPDOCS-aa\0000-wpdocs 2015" -Filter "*.wpd" -Recurse 

2)要访问你需要先包重命名,项目在$_管道变量一个Foreach-Object cmdlet。

Foreach-Object {Rename-Item -Path $_.Fullname -NewName "$($_.BaseName) -2015.wpd"} 

一个更小记的是,你可以让你的cmdlet的详细可重复使用的,如果你不硬编码的.WPD扩展。我会做-NewName参数更是这样的:

-NewName ($_.BaseName + " -2015" + $_.Extension) 

,如果你想与其他一些文件类型重用这个这样一来,所有你必须改变的是滤波部分。

所以都放在一起,整个事情是:

Get-ChildItem -Path "C:\WPDOCS-aa\0000-wpdocs 2015" -Filter "*.wpd" -Recurse | Foreach-Object {Rename-Item -Path $_.Fullname -NewName ($_.BaseName + " -2015" + $_.Extension)} 
+0

感谢您的更正。我将在本周末尝试他们 –

+0

非常感谢你,克里斯托弗。我想我现在就试试它,它效果非常好! –

+0

我只是Powershell的新手。我正在继续我的重命名项目。我使用以下命令将所有以“a”开头的wordperfect文件复制到一个文件夹中。 (在20个以上的主文件夹中有40,000多个文件和几个子文件夹(也包含子文件夹,按字母顺序排列) 下面的命令有效,但是我设置了这个方法,它也在复制文件夹和子文件夹。将文件复制到新文件夹中,例如“A” cd C:\ WPDOCS-SKY Copy-Item -Path c:\ WPDOCS-SKY -Filter“a * .wpd”-Recurse -Destination c:\ wpdocs- α –

0

我认为这是一个稍微简单,只是执行以下操作:

dir *.wpd | rename-item -NewName {$_.BaseName + "-2015" + $_.Extension} 

由于dirGet-ChildItem和更短的别名过滤器可以直接作为参数与当前目录中的假定路径进行传递。对于我们这些老年人来说,这也是对原始DOS的更接近的模拟。

相关问题