Tod*_*oes 2 directory powershell file 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}
Run Code Online (Sandbox Code Playgroud)
但找不到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}
Run Code Online (Sandbox Code Playgroud)
这是我的第一个powershell脚本;)
我想你可以简化这个:
Get-ChildItem c:\graphics -rec *.jpg | Move-Item -Dest {$_.Directory.FullName + "\" +
$_.Directory.Name + "_360\" } -WhatIf
Run Code Online (Sandbox Code Playgroud)
-whatif如果建议的移动操作看起来正确,请删除.