PowerShell serait également mon outil ; en fait, j'ai créé cette ligne unique (en quelque sorte) à exécuter en c : \images :
dir *.jpg | %{ $dst = $_.basename -replace '(...)(...)(...)$','\$1\$2\$3'; md $dst >$null 2>&1; move-item $_ -Destination $dst }
Prévoyez un peu de PowerShell temps, jouer dans le ISE y apprendre .
L'équivalent élargi est quelque chose comme ceci :
dir *.jpg
| foreach-object
{
$dst = $_.basename -replace '(...)(...)(...)$','\$1\$2\$3'
md $dst >$null 2>&1
move-item $_ -Destination $dst
}
Ou, un peu plus verbeux et avec un exemple dans les commentaires :
# if run from "c:\images\", we can get the image list
$images = dir *.jpg
# process images one by one
foreach ($image in $images)
{
# suppose $image now holds the file object for "c:\images\1234567890.jpg"
# get its file name without the extension, keeping just "1234567890"
$filenamewithoutextension = $image.basename
# group by 3 from the end, resulting in "1\234\567\890"
$destinationfolderpath =
$filenamewithoutextension -replace '(...)(...)(...)$','\$1\$2\$3'
# silently make the directory structure for "1\234\567\890"
md $destinationfolderpath >$null
# move the image from "c:\images\1234567890.jpg" to the new folder "c:\images\1\234\567\890\"
move-item $image -Destination $destinationfolderpath
# the image is now available at "c:\images\1\234\567\890\1234567890.jpg"
}