将文件移动到按字母顺序命名的文件

时间:2013-11-24 19:46:22

标签: powershell

只是想知道是否可以根据字母表将脚本移动到特定文件夹?

例如,Scream 4将被移动到e:\ movies \ s \ 阿凡达将被转移到e:\ movies \ a \

我启动一个如下所示的脚本: 但结果并不好!脚本尝试创建一个文件名为...的目录。

$a = new-object -comobject wscript.shell
$b = Get-Location

    foreach($file in (dir $b -file -recurse)) { 
        New-Item -Path $b -Name (Split-Path $file.fullname -Leaf).Replace($file.extension,"") -ItemType Directory -Confirm
        Move-Item -Path $file.fullname -Destination "$b\$((Split-Path $file.fullname -Leaf).Replace($file.Extension,''))" -Confirm
        }

一个想法? 非常感谢! Kreg

1 个答案:

答案 0 :(得分:5)

在运行命令之前,目标文件夹必须存在:

dir $b -file -recurse | Move-Item -Destination {"e:\movies\$($_.Name[0])"} 

这将在运行时创建文件夹:

dir $b -File -Recurse | foreach{
    $folder = Join-Path e:\movies $_.Name[0]
    md $folder -force | Out-Null
    $_ | Move-Item -Destination $folder
}