Aqui está uma solução de powershell
#edit this for your settings
$sourceFolder = 'E:\test'
$destFolder = 'E:\Test2'
$filesToCopy = 100
$searchFilter = '*.mp3'
function Copy-RandomFiles
{
param (
[Parameter(Mandatory=$true, Position=0)]
[string]$SourceDirectory,
[Parameter(Mandatory=$true, Position=1)]
[string]$DestinationDirectory,
[int]$FilesToCopy = 100,
[string]$SearchFilter = '*.*'
)
$rand = New-Object System.Random
$files = [System.IO.Directory]::GetFiles($SourceDirectory, $SearchFilter, [System.IO.SearchOption]::AllDirectories)
$usedIndexes = @{}
$filteredList = New-Object System.Collections.ArrayList
#build list of random indexes
for([int]$i = 0; ($i -lt $FilesToCopy) -and ($i -lt $files.Length); $i++)
{
$index = $rand.Next(0, $files.Length)
#loop till we find an available index
while($usedIndexes.ContainsKey($index))
{
$index = $rand.Next(0, $files.Length)
}
$usedIndexes.Add($index, $null)
$dump = $filteredList.Add($files[$index]) #dump is so it does not display a count
}
if($filteredList.Count -gt 0)
{
Copy-Item -Path $filteredList.ToArray() -Destination $DestinationDirectory
}
$count = $filteredList.Count
Write-Host "$count file(s) copied"
}
Get-ChildItem $destFolder | Remove-Item
Copy-RandomFiles $sourceFolder $destFolder -FilesToCopy $filesToCopy -SearchFilter $searchFilter
Write-Host "Press any key to continue . . ."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Salve como um arquivo de texto no disco rígido em algum lugar com a extensão .ps1
. Em seguida, crie um link de atalho na sua área de trabalho com isso como o caminho
%windir%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Unrestricted -file C:\Path\To\CopyFileScript.ps1
Isso excluirá tudo na pasta $destFolder
e copiará $filesToCopy
arquivos de $sourceFolder
e suas subpastas usando $searchFilter
como filtro