繁体   English   中英

使用 PowerShell 将子文件夹移动到其他位置并根据父级重命名

[英]Move subfolder elsewhere and rename based on parent using PowerShell

我在具有以下结构的不同父文件夹下有许多报告文件夹:

C:\Users\USER\Downloads\LTFT01\Report
C:\Users\USER\Downloads\LTFT02\Report
C:\Users\USER\Downloads\LTFT03\Report

我想要做的是,如果任何报告文件夹是non-empty ,则将该报告文件夹移至其他位置并使用名称中的原始父文件夹重命名该文件夹。 如 LTFT01Report 和 LTFT02Report。

我已经准备好“测试它是否为非空”,但我不知道从这里做什么。 我真的不知道foreach是如何工作的,所以我无法实现它(即使在搜索之后!)

If (Test-Path -Path "C:\Users\USER\Downloads\*\Report\*"

编辑:看来我需要澄清以下几点:

  1. 截至本周,我是编码新手,也是 PowerShell 的新手
  2. 我用谷歌搜索了很多答案,但没有(直接)与我的问题相关,或者让我感到困惑:(
  3. 我真的很感激朝着正确的方向轻推,而不是 git gud。
  4. 我需要一个 foreach,因此我的问题的最后一行,但不确定。 再次 - 新手在这里!

在这里!

所以我已经能够根据一些研究创建一个答案:

#Get report folder path
$ReportPath = "C:\Users\USER\Downloads\*\Report"
$MasterReportPath = "C:\Users\USER\Downloads\MasterReports"

#Rename report folder to {currentparentname}report
Get-Item -Path $ReportPath | ForEach-Object {$a = $_.FullName | split-path -Parent | split-path -leaf; Rename-Item -Path $_.FullName -NewName $a"Report"}

#Move report folder
$AnyNamedReportFolder = Get-Item "C:\Users\USER\Downloads\*\*Report*" -Exclude *.jmx, *.csv
Move-Item -Path $AnyNamedReportFolder -Destination $MasterReportPath

绝对不优雅,但可以完成工作。 由于我有这个问题的主要答案,我将其标记为已回答。 但是,这有一个问题,即如果多次运行,则相同命名的文件夹将不会移动(因为它不是 append 唯一的数字或字符)。 如果您有兴趣,我在这里的一个新问题中强调了这一点。 如果您只需要一个一次性的工作脚本,那么上面的脚本对我有用。

将同名文件夹移动到另一个文件夹

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM