У меня есть этот скрипт, который периодически запускается для сбора файлов рабочего стола и упорядочивает их по типу файла в одну папку на резервном диске.
function get-destbytype($ext)
{
switch ($ext)
{
{ $ext -match '(jpg|png|gif|bmp)'} { "images" }
{ $ext -match '(divx|mpeg|avi)'} { "videos" }
{ $ext -match '(cs|js|java|py|class|vbs|jsp)'} { "code" }
{ $ext -match '(sql|ps1|pl|py)'} { "scripts" }
{ $ext -match '(zip|7z|rar)'} { "compressed" }
{ $ext -match '(ppt|pptx|doc|docx|pdf)'} { "documents" }
{ $ext -match '(csv|xls|xlsx)'} { "spreadsheets" }
{ $ext -match '(exe|dll|jar|ear|bat|cmd)'} { "executables" }
{ $ext -match '(txt|log)'} { "text" }
{ $ext -match '(msg|htm|html|lnk)'} { "miscellaneous" }
{ $ext -match '(properties|xml|ini)'} { "config" }
default {"$ext" }
}
}
$dirtyfolder = "C:\Documents and Settings\user\Desktop\"
$org = "$nas\Desktop\ORG"
ls $dirtyfolder/* | ? {!$_.PSIsContainer} | %{
$dest = "$($org)\$(get-destbytype $_.extension)"
if (! (Test-Path -path $dest ) )
{
write-host "creating $dest"
new-item $dest -type directory
}
mv -path $_ -destination $dest
}
Скрипт был тщательно протестирован и, как мне кажется, в большинстве случаев работает нормально. Недавно, когда .csv
файлы были обнаружены впервые, они были перемещены в новую папку с именем
code spreadsheets
.
Это очевидно, потому что файлы .cs
должны идти в папку code
, а файлы .csv
- в папку spreadsheets
, а сценарий не различает .cs
и .csv
.
Как мне изменить скрипт, чтобы он этого не делал?
Также, что можно сделать, чтобы исключить ярлыки на рабочем столе с расширением .lnk
?