Показать полную графическую версию : [решено] Как собрат файлы в папку по 20мб каждый?
Добрый день!
Прошу помочь в создании батника который должен выполнять следующие действия:
cобрат файлы в папку по 20мб каждый или менше но не выше с помощю (bat ника).
Есть файлы *.xxx разного размера 01.xxx,02.xxx,03.xxx.... 0n.xxx; надо их сотироват по папкам по 20мб. (последователност имен должно сохранятся!)
Буду благодарен за любую помощь!
С Уважением Акмал
Foreigner
13-03-2012, 19:37
muqanna,
@echo off
for /f "tokens=*" %%i in (' dir /b "C:\Source Dir\*.xxx" ') do if %%~zi leq 20971520 move "%%i" "C:\Destination Dir"
ne jdal !!! proverim!
Foreigner
извините а он циклический будет работат?
Если обем на 200 мб должно 10 папок, ДА?
Foreigner
пишет : не удается найти указанный файл
там где сравнения размера if %%~zi leq 20971520 там место размера (%%~zi) пустата?
if leq 20971520 что делать?
Foreigner
13-03-2012, 20:08
muqanna,
Извиняюсь, может я не правильно понял? Нужно создавать папки и в них перемещать файлы, но так, что бы размер папки не превышал 20Mb? Если так, то:
А Я понял не правилно изложил проблему там файлы с размерами 1мб, 100кб, 15мб, итд их надо собрат в сумме 20 мб. Пример: 30 файла сумма >= 20мб эту имел виду!(PARDONAMA)
Foreigner
13-03-2012, 20:29
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 - папка, в которой будут создаваться подпапки с перемещенными файлами
Foreigner
привидущей верси пишет что: Отсутствующий операнд! Непредвиденное появление:20971520
пошол проверят новую версию!
Foreigner
Я проверил ну 1 папку создал а вторую не создал и удалиль половино файлов создал 2,3, ,,, 7 эти были файли без расширения.
Foreigner
13-03-2012, 21:03
muqanna, исправьте в конце батника, я проверил, должно работать:
....
set /a dest+=1
set "totalsize=%~z1"
md "C:\Destination Dir\%dest%"
move %1 "C:\Destination Dir\%dest%"
Foreigner
Спасибо! Работает супер прога! :hi:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.