PowerShell - Сортировка файлов по папкам

Ответить
Аватара пользователя
victor21043

PowerShell - Сортировка файлов по папкам

Сообщение victor21043 »

Скриптовые языки администрирования Windows

Уважаемый пользователи портала,

-Возникла потребность распределения огромного количества файлов ,например по 80 штук,в папки(будет много папок по 80 файлов в каждой )

-Был найден скрипт,по аналогичной теме форума*, и подставлен код его в powershell 2.0(ctrl+v)

-Ничего не произошло,к сожалению(не знаю почему)

-Хочется решить проблему без сторонних программ,автоматически

-Язык-любой,который не потребует сторонних программных продуктов



Скрипт-сценарий

[spoiler]Код:
[/spoiler]

Код: Выделить всё

$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)







*Вот :



Любой язык - [решено

[spoiler]]Распределение файлов в каталоге
Любой язык - [решено] Распределение файлов в каталоге
[/spoiler]
Аватара пользователя
dark-------13

Re: PowerShell - Сортировка файлов по папкам

Сообщение dark-------13 »

Используй вот этот скрипт:



Код:

Код: Выделить всё

$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

Re: PowerShell - Сортировка файлов по папкам

Сообщение victor21043 »

Уточнение,

1)Если я хочу запустить сортировку в одной корневой папке ,то:

можно этого не писать:

$Path = "d:\test\in"

$dest = "d:\test\out"

Можно ли так:

$source = "F:\677"

2)

Что это такое,где число n($n = 80)?

$split = 5[/i] (разделить,расщепить по 5 штук в папке?)
Ответить

Вернуться в «Скриптовые языки администрирования Windows»