Войти

Показать полную графическую версию : Перемещение файлов (jpg) по их количеству


dark-------13
27-04-2011, 09:13
Здравствуйте,

Подскажите пожалуйста можно ли на bat реализовать следующее:

Имеем папку PICS, в ней много папок с файлами jpg Пример: ( D:\PICS\2011 D:\PICS\2010 D:\PICS\1 ), и в каждой папке разное количество файлов *.jpg, необходимо проверить сколько файлов jpg в каждой папке если 500 файлов jpg, то нужно в разделе D:\NEW\ создать папку с именем исходной папки (в которой были файлы) и уже в ней создать новую, далее перенести в нее эти 500 штук файлов jpg Пример: D:\NEW\2011\1\, далее заново проверяем папки, и ведем поиск если опять набралось 500 опять переносим но уже во 2 папку в Пример: D:\NEW\2011\2, если файлов меньше 500 то переносим оставшиеся также в новую папку в разделе D:\new\2011\ и так со всеми папками в папке PICS.

Заранее спасибо.

amel27
27-04-2011, 11:11
@echo off
SETLOCAL EnableDelayedExpansion

set $SRC=D:\PICS
set $DST=D:\NEW

for /d %%a in ("%$SRC%\*") do (set/a $n=-1
for /f "delims=" %%b in ('dir/b/s/a-d "%%a\*.jpg"2^>nul') do (set/a $n+=1
set/a $m=1+!$n!/500
if not exist "%$DST%\%%~na\!$m!" md "%$DST%\%%~na\!$m!"
move/-y "%%b" "%$DST%\%%~na\!$m!\">nul
))

El Sanchez
27-04-2011, 13:37
amel27, надо поменять местами выделенное, а то не отработает: :wink:

for /d %%a in ("%$SRC%\*.jpg") do (set/a $n=-1
for /f "delims=" %%b in ('dir/b/s/a-d "%%a\*"2^>nul') do (set/a $n+=1

amel27
27-04-2011, 16:20
El Sanchez, тем страннее, что стоит "решено"




© OSzone.net 2001-2012