ell*_*gcf 2 directory powershell parent file-move
我有一个名为“四月报告”的文件夹,其中包含一个月中每一天的文件夹。然后,每个文件夹都包含另一个包含PDF文件的文件夹:
四月报告
2018年1月4日
?天报表
?批准.pdf
?未经批准.pdf
?
2018年2月4日
?天报表
?批准.pdf
?未经批准.pdf
?
?
2018年4月30日
天报表
批准.pdf
未经批准.pdf
PDF每天都有相同的名称,因此我要做的第一件事是将它们上移一个级别,这样我就可以使用包含日期的文件夹名称来重命名每个文件,以便包含日期。我尝试过的脚本是这样的(在“ April Reports”中设置了路径):
$files = Get-ChildItem *\*\*
Get-ChildItem *\*\* | % {
Move-Item $_.FullName (($_.Parent).Parent).FullName
}
$files | Remove-Item -Recurse
Run Code Online (Sandbox Code Playgroud)
删除多余文件夹“ dayreports”的步骤有效,但文件尚未移动。
您的代码中有2个错误:
Get-ChildItem *\*\*枚举dayreport文件夹(这就是删除文件夹的原因),而不是其中的文件。您需要Get-ChildItem $files或Get-ChildItem *\*\*\*枚举文件。
FileInfo对象没有属性Parent,只有DirectoryInfo对象有。将属性Directory用于FileInfo对象。同样,点访问通常可以以菊花链方式进行,因此不需要所有的括号。
这不是一个错误,而是一个过度复杂的问题:Move-Item可以直接从管道读取,因此您无需将其放入循环中。
将您的代码更改为这样的代码,它将执行您想要的操作:
$files = Get-ChildItem '*\*\*'
Get-ChildItem $files | Move-Item -Destination { $_.Directory.Parent.FullName }
$files | Remove-Item -Recurse
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3432 次 |
| 最近记录: |