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

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

muqanna 13-03-2012 19:28 1878501

Как собрат файлы в папку по 20мб каждый?
 
Добрый день!

Прошу помочь в создании батника который должен выполнять следующие действия:

cобрат файлы в папку по 20мб каждый или менше но не выше с помощю (bat ника).
Есть файлы *.xxx разного размера 01.xxx,02.xxx,03.xxx.... 0n.xxx; надо их сотироват по папкам по 20мб. (последователност имен должно сохранятся!)





Буду благодарен за любую помощь!
С Уважением Акмал

Foreigner 13-03-2012 19:37 1878510

muqanna,

Код:

@echo off

for /f "tokens=*" %%i in (' dir /b "C:\Source Dir\*.xxx" ') do if %%~zi leq 20971520 move "%%i" "C:\Destination Dir"


muqanna 13-03-2012 19:40 1878513

ne jdal !!! proverim!

Foreigner
извините а он циклический будет работат?
Если обем на 200 мб должно 10 папок, ДА?

muqanna 13-03-2012 20:08 1878546

Foreigner

пишет : не удается найти указанный файл
там где сравнения размера if %%~zi leq 20971520 там место размера (%%~zi) пустата?
if leq 20971520 что делать?

Foreigner 13-03-2012 20:08 1878547

muqanna,
Извиняюсь, может я не правильно понял? Нужно создавать папки и в них перемещать файлы, но так, что бы размер папки не превышал 20Mb? Если так, то:

muqanna 13-03-2012 20:14 1878553

А Я понял не правилно изложил проблему там файлы с размерами 1мб, 100кб, 15мб, итд их надо собрат в сумме 20 мб. Пример: 30 файла сумма >= 20мб эту имел виду!(PARDONAMA)

Foreigner 13-03-2012 20:29 1878571

muqanna, попробуйте этот вариант:
Код:

@echo off
setlocal

pushd "C:\Source Dir"
set "dest=1"
for /f "tokens=*" %%i in (' dir /b *.xxx ') do call:1 "%%i"
popd
goto:eof

:1
2>nul md "C:\Destination Dir\%dest%"
set /a totalsize+=%~z1

if %totalsize% leq 20971520 move %1 "C:\Destination Dir\%dest%" && goto:eof

set /a dest+=1
set "totalsize=%~z1"
move %1 "C:\Destination Dir\%dest%"

Где:
C:\Source Dir - папка с файлами
C:\Destination Dir - папка, в которой будут создаваться подпапки с перемещенными файлами

muqanna 13-03-2012 20:36 1878579

Foreigner

привидущей верси пишет что: Отсутствующий операнд! Непредвиденное появление:20971520
пошол проверят новую версию!

muqanna 13-03-2012 20:52 1878589

Foreigner

Я проверил ну 1 папку создал а вторую не создал и удалиль половино файлов создал 2,3, ,,, 7 эти были файли без расширения.

Foreigner 13-03-2012 21:03 1878597

muqanna, исправьте в конце батника, я проверил, должно работать:
Код:

....

set /a dest+=1
set "totalsize=%~z1"

md "C:\Destination Dir\%dest%"
move %1 "C:\Destination Dir\%dest%"


muqanna 14-03-2012 07:39 1878816

Foreigner
Спасибо! Работает супер прога! :hi:


Время: 02:02.

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