我有一個定期運行的腳本來收集桌面文件,並通過文件類型將它們組織到備份驅動器上的單個文件夾中。按類型組織文件
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
的桌面快捷方式?
注意,'之開關直接支持的正則表達式的值,而不必在每個測試表達式執行'-match':'切換-regex($ EXT){「(JPG | PNG | GIF | BMP)$ '{return'images'}'(divx | mpeg | avi)$'{return'videos'} ...}'。另請參閱:['Get-Help about_Switch'](http://go.microsoft.com/fwlink/?LinkID=113271)。 –