PDA

Показать полную графическую версию : Сортировка файлов по папкам


victor21043
12-09-2016, 10:33
Скриптовые языки администрирования Windows
Уважаемый пользователи портала,
-Возникла потребность распределения огромного количества файлов ,например по 80 штук,в папки(будет много папок по 80 файлов в каждой )
-Был найден скрипт,по аналогичной теме форума*, и подставлен код его в powershell 2.0(ctrl+v)
-Ничего не произошло,к сожалению(не знаю почему)
-Хочется решить проблему без сторонних программ,автоматически
-Язык-любой,который не потребует сторонних программных продуктов
$source = "F:\677"
#Основная целевая папка
$target = "F:\677"
#Количество файлов для переноса в каждую папку
$n = 80

$fldrs = ((Get-ChildItem $source).Count)/$n
$i = 1
do {
md $target\$i
Get-ChildItem $source | select -First $n | move -Destination $target\$i
$i++
} while ($i -le $fldrs+1)
*Вот :
]Распределение файлов в каталогеhttp://forum.oszone.net/thread-259461.html

dark-------13
12-09-2016, 12:16
Используй вот этот скрипт:
$Path = "d:\test\in"
$dest = "d:\test\out"


$prefix = 0
$counter = 1
$split = 5
$files = Get-ChildItem $Path -Recurse -include *.txt | ? {!$_.PSIsContainer}
$fcount = $files.count
$step = $split - 1

while(Test-Path "$dest\$counter")
{
$counter++
}

while($prefix -lt $fcount)
{
$files[$prefix..$step] | copy-Item -Destination {
$folder = "$dest\$counter"
md $folder -Force | Out-Null

$fpath = Join-Path $folder $_.Name

$i = 1
while($true) {
if (Test-Path $fpath) {
$fpath = "{0}\{1}_{2}{3}" -f $folder,$_.basename,$i,$_.extension
$i++
}
else {
$fpath
break
}
}
}
$prefix = $step + 1
$step += $split
$counter++
}
Перед выполнением скриптов дай две команды , Set-ExecutionPolicy RemoteSigned , и
Set-ExecutionPolicy Unrestricted и разреши выполнение скриптов на данной машине.

Укажите свой тип файлов и их количество. Копирование можно заменить на перенос move-Item

victor21043
12-09-2016, 23:17
Уточнение,
1)Если я хочу запустить сортировку в одной корневой папке ,то:
можно этого не писать:
$Path = "d:\test\in"
$dest = "d:\test\out"
Можно ли так:
$source = "F:\677"
2)
Что это такое,где число n($n = 80)?
$split = 5[/I] (разделить,расщепить по 5 штук в папке?)




© OSzone.net 2001-2012