Acabei de criar este script do PowerShell:
$places = @{txt='?\Documents\TextFiles'; exe='?\Documents\NewApps'}
$userprof = [Environment]::ExpandEnvironmentVariables('%USERPROFILE%')
cd ($userprof + '\Downloads')
Do {
dir -File | % {
If ($_.Extension.Length -gt 0) {
$ext = $_.Extension.Substring(1).ToLowerInvariant()
} Else {
$ext = 'NOEXT'
}
If (-not $places.ContainsKey($ext)) {$ext = 'DEFAULT'}
If ($places.ContainsKey($ext)) {
$dest = $places[$ext].Replace('?', $userprof)
move $_ -Dest $dest
}
}
Start-Sleep -Seconds 5
} While ($true)
Salve-o como um arquivo .ps1
em algum lugar.
Ele foi projetado para ser executado em segundo plano, verificando novos arquivos na sua pasta Downloads a cada cinco segundos. (Você pode alterar o intervalo na segunda à última linha.) Para definir onde os arquivos vão, você pode alterar o $places
map na primeira linha. Um ponto de interrogação será substituído automaticamente pelo caminho para a pasta do seu perfil de usuário. Atualmente, colocará .txt
arquivos em uma pasta chamada TextFiles
na minha pasta Documentos e .exe
arquivos em um chamado NewApps
. Você precisará criar essas pastas antes de executar o script. Para definir onde os arquivos sem extensão vão, adicione uma entrada para NOEXT
. Para definir onde tipos de arquivos desconhecidos vão, adicione uma entrada para DEFAULT
.
Antes que o PowerShell permita a execução de scripts, você precisará ativar a execução de scripts. Consulte a seção "Ativando scripts" do wiki de tags do PowerShell .
Uma vez feito isso, você pode configurar um arquivo de lote normal para ser executado quando você fizer o login que inicia este script. Isso deve ser feito se você ajustar o caminho no último argumento para o caminho completo de onde salvou o script grande:
powershell -Command "Start-Process -WindowStyle Hidden -FilePath powershell -ArgumentList 'C:\path\to\your\script.ps1'"
Se você precisar atualizar a lista de locais para as várias extensões, basta atualizar o arquivo de script. Depois de fazer isso, você pode fazer logoff e voltar, ou matar e reiniciar o processo do PowerShell em segundo plano.