我有一个文件夹 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
.
我需要移动子文件夹 aa_000.jpg
中的 24 个文件( aa_001.jpg
, aa_023.jpg
, ..., c:\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}
最佳答案
我认为你可以将其简化为:
Get-ChildItem c:\graphics -rec *.jpg | Move-Item -Dest {$_.Directory.FullName + "\" +
$_.Directory.Name + "_360\" } -WhatIf
如果建议的移动操作看起来正确,请删除 -whatif
。
关于file - Powershell:复制子文件夹中的选定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15352068/