2

我有一个文件夹c:\graphics(根)和一个创建子文件夹的程序,例如aa, bm, czx, mjpq, zz(我有很多子文件夹,长度是可变的)。

在每个子文件夹中,我有 26 个文件和一个文件夹。例如,aa文件夹有:aa_000.jpg, aa_001.jpg, ..., aa_023.jpg; 其他两个文件aa_360.jpgaa.html一个文件夹。完整路径是C:\graphics\aa\aa_360

我需要在子文件夹中移动 24 个文件(aa_000.jpg, aa_001.jpg, ..., aa_023.jpgc:\graphics\aa\aa_360并且也等于每个子文件夹。

另一个例子是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}
4

1 回答 1

6

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

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

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

于 2013-03-12T02:22:03.500 回答