我在许多子文件夹中都有数千个图像文件(jpg,PNG,gif等)。例子
images\2018\jan\baba\hello1_abc.jpg
images\2018\jan\kaka\hello6_pqr.gif
images\2016\mar\baby\hello7_abc.png
images\2018\jan\yoga\hello3_xyz.jpg
images\2018\jan\yoga\hello345_abc.bmp
等等等等
(ABC,pqr,XYZ是表示某些文件属性的3位数字)
现在,在不干扰目录结构的情况下,我想移动名称中包含abc
的所有文件。使其按年,月,主题和“ abc”,“ xyz”,“ pqr”排序。喜欢,
images\abc\2018\jan\baba\hello1_abc.jpg
images\abc\2016\mar\baby\hello7_abc.png
images\abc\2018\jan\yoga\hello345_abc.bmp
images\2018\jan\kaka\hello6_pqr.gif
images\2018\jan\yoga\hello3_xyz.jpg
现在我使用手动方法,即
尽管此方法可以按我的预期工作,但它非常慢,因为我的图像集超过了数千张图像。 搜索,删除和还原它们非常耗时。
我知道这可以通过使用某些脚本(does,powershell或自动热键)(这是我最喜欢的脚本语言)来实现,但是我不确定如何实现。
请帮助。
答案 0 :(得分:0)
您可以尝试这样的事情:
#Search query
$Query = [RegEx]'_abc$'
#Root of search and place for new structure.
$FileRoot = "C:\images\"
#Get all files in the desired structure that match your search query
$Files = Get-ChildItem -Path $FileRoot -Recurse | Where-Object { ! $_.PSIsContainer -and $_.Basename -match $Query }
foreach ($File in $Files) {
#Generates a new path
$NewPath = $FileRoot + $Query + "\"+ $File.DirectoryName.Replace("$FileRoot","")
#Create the folder if it is not already created and move the item.
New-Item -Path $NewPath -ItemType directory
Move-Item -Path $File.Fullname -Destination $NewPath
}
我已经做了一些轻量的测试,但是可能有些事情没有考虑到您的文件结构。
您可以将一些文件夹复制到c:\ images1 \之类的测试中,然后尝试在该文件夹中运行脚本。只需更改$ FileRoot变量“
为了选择要查找的文件,请更改$ Query变量。
结果应该是将所有包含“ ABC”的文件都移动到:
C:\images\abc\RestOfThePathTheItemHadBefore\file_abc.ext