Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Распределение артов в папки по 10 штук (http://forum.oszone.net/showthread.php?t=343628)

st3r 12-01-2020 00:14 2904592

Распределение артов в папки по 10 штук
 
Нужен батник, который будучи помещенным в папку с артами, начнет создавать папки и наполнять их артами по 10 штук. т.е. в папке с батником 100 картинок, после запуска скрипта должно остаться 10 папок по 10 артов в каждом.

DJ Mogarych 12-01-2020 08:21 2904603

Что такое арты?

Iska 12-01-2020 08:52 2904608

Цитата:

Цитата st3r
с артами »

Каких калибров?


Цитата:

Цитата st3r
создавать папки »

По какому принципу формируются имена?

Цитата:

Цитата st3r
по 10 штук »

По какому принципу отбираются «по 10 из 100»?

На PowerShell (проверялось на 5.1; каталоги создаются нумерованные, тупо из 4 символов; имена берутся по порядку и никак не сортируются):
Скрытый текст
Код:

$sSourceFolder = 'C:\Мои проекты\0294\Source'
$iGroupCount  = 10

$aFileInfo = Get-ChildItem -Path "$sSourceFolder\*" -Include '*.jpg', '*.png', '*.bmp', '*.gif' -File

if($aFileInfo.Count -gt 0) {
    $i =  0
   
    do {
        $sDestFolder = [System.IO.Path]::Combine($sSourceFolder, ([System.Int32]($i / $iGroupCount + 1)).ToString("0000"))
   
        if(-not [System.IO.Directory]::Exists($sDestFolder)) {
            [System.IO.Directory]::CreateDirectory($sDestFolder) | Out-Null
        }

        Write-Host "[$sDestFolder]" -ForegroundColor Yellow

        ($aFileInfo[$i..[Math]::Min($aFileInfo.Count - 1, $i + $iGroupCount)]).ForEach({
            $_.MoveTo("$sDestFolder\$($_.Name)")
            Write-Host "`t$($_.Name)" -ForegroundColor Cyan
        })

        $i = $i + $iGroupCount
    } while($i -lt $aFileInfo.Count)
} else {
    Write-Warning 'Nothing found.'
}


megaloman 12-01-2020 17:40 2904652

CMD. Каталоги создаются нумерованные, тупо из 4 символов; файлы берутся по порядку, сначала более старые.
Код:

@Echo Off
        Set /A Portion=10
        Set "Exclude=bat cmd xls "xlsm" txt"
       
        Set /A ND=10000
        Set /A NF=0

        FOR /F "usebackq delims=" %%f IN (`2^>nul Dir *.* /B /O:D /A:-D`) Do Call :MyMove "%%f"
Exit /B

:MyMove
        For %%e In (%Exclude%) Do If /I ".%%~e"=="%~x1" Exit /B 1
        If Not %NF% EQU 0 GoTo :Cont
                :Begin
                        Set /A ND+=1
                        If Exist "%ND:~1%" GoTo :Begin
                Md "%ND:~1%"
        :Cont
        Set /A NF+=1
        >NUL Move "%~1" "%ND:~1%\"
        If %NF% EQU %Portion% Set /A NF=0       
Exit /B

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

Set "Exclude=bat cmd xls "xlsm" txt"


Время: 00:35.

Время: 00:35.
© OSzone.net 2001-