Powershell:复制子文件夹中的选定文件

时间:2013-03-12 02:07:31

标签: file powershell directory subdirectory

我有一个文件夹 c:\ graphics (root),程序会创建子文件夹 aa bm czx mjpq zz (这是一个例子,我有很多子文件夹,长度是变量)。在每个子文件夹中,我有26个文件和一个文件夹。例如, aa 文件夹包含:* aa_000.jpg *,* aa_001.jpg *,...,* aa_023.jpg *;其他两个文件* aa_360.jpg *, aa.html 和一个文件夹,路径完成它的 C:\ graphics \ aa \ aa_360 。我需要在子文件夹 c:\ graphics \ aa \ aa_360 中移动24个文件* aa_000.jpg *,* aa_001.jpg *,...,* aa_023.jpg *并且还等于每个子文件夹。其他例子 c:\ graphics \ mjpq \ mjpq_360 应该有mjpq_000.jpg,...,mjpq_023.jpg。

我开始编写脚本,想在子文件夹中移动所有.jpg(25个文件)(之后,我不得不考虑提取* xxx_360.jpg *)但不起作用:

Get-ChildItem c:\graphics -rec | where-object {$_.extension -match "jpg"} | ForEach-object {$newPath =(Get-Location).toString()+(Get-Location).ToString().SubString(10)+"_360"); Move-Item $_.FullName $newPath}

但找不到Get-Location文件路径。 谢谢你的进步。

注意:我找到了解决方案。工作,但我在控制台中发现错误:

Get-ChildItem c:\graphics -rec | where-object {$_.extension -match "jpg" -and (!($_.name -like "*360*"))} | ForEach-Object {$newPath =($_.DirectoryName).toString()+($_.DirectoryName).ToString().SubString(10)+"_360"; Move-Item $_.FullName $newPath}

这是我的第一个powershell脚本;)

1 个答案:

答案 0 :(得分:6)

我认为您可以将其简化为:

Get-ChildItem c:\graphics -rec *.jpg | Move-Item -Dest {$_.Directory.FullName + "\" +
    $_.Directory.Name + "_360\" } -WhatIf

如果建议的移动操作看起来正确,请删除-whatif