PDA

View Full Version : Dividere Cartella in più cartelle per grandezza.


brubaker
02-12-2014, 15:37
Salve ragazzi ho la necessità di dividere una cartella in piu' cartelle: Cartella1,2,3etc mantenendo intatto i file all'interno e le sottocartelle.
ho questo semplice comando batch:
@echo off
setlocal enabledelayedexpansion

set folder=C:\Users\PIPPO\Desktop\OUT2\Test

set filecount=0
set foldercount=1
set maxfiles=10

for /F "tokens=*" %%G in ('dir "%folder%" /A: D /B') do (
set /A filecount+=1
set target=0000!foldercount!
set target=!target:~-5!
if not exist "%folder%\!target!" md "%folder%\!target!"
move "%folder%\%%G" "%folder%\!target!"

if [!filecount!]==[%maxfiles%] (
set /A foldercount+=1
set filecount=0
)
)

Che funziona alla grande ma divide la cartella in piu' cartella con la scelta di max elementi...:rolleyes:
qualcuno può darmi una mano a convertire il comando con la scelta della grandezza delle cartelle e non dei files all'interno delle cartelle create..Grazie!!!:)

brubaker
02-12-2014, 21:38
Nessuno che sa darmi una mano, almeno nella possibilita' di scegliere la divisione in numero di cartelle???:muro:

Daniels118
10-12-2014, 10:11
In pseudocodice:
input(origine)
input(dest_base)
input(dim_cartella)

files = lista_file(origine)
dest = 0
cur_dir = dest_base + dest
cur_dim = 0
for (file in files) {
if (cur_dim > dim_cartella) {
dest = dest + 1
cur_dir = dest_base + dest
cur_dim = 0
}
if not exists(dest) {
mkdir(dest)
}
cur_dim = cur_dim + dimensione(file)
sposta(file, dest)
}

brubaker
10-12-2014, 11:40
In pseudocodice:
input(origine)
input(dest_base)
input(dim_cartella)

files = lista_file(origine)
dest = 0
cur_dir = dest_base + dest
cur_dim = 0
for (file in files) {
if (cur_dim > dim_cartella) {
dest = dest + 1
cur_dir = dest_base + dest
cur_dim = 0
}
if not exists(dest) {
mkdir(dest)
}
cur_dim = cur_dim + dimensione(file)
sposta(file, dest)
}

:wtf: Cavolo non ho mai avuto un mal di testa così forte :confused: :D

brubaker
11-12-2014, 13:53
Bhe io scritto sta cosa qui seguendo il pseudocodice di Daniele, ma non funziona....:muro:
@echo off
setlocal enabledelayedexpansion

set /p "folder="
set /p "outputfolder="
set /p "maxsize="

files = "%folder%"
dest = 0
cur_dir = %outputfolder% + %folder%
cur_dim = 0
FOR /F "tokens=*" %%G IN ('DIR a /b /d "%folder%"') DO ( {
if (cur_dim > %maxsize%) {
dest = dest + 1
cur_dir = %outputfolder% + %folder%
cur_dim = 0
}
if not exists('%folder%') {
mkdir('%outputfolder%')
}
cur_dim = cur_dim + dimensione('%maxsize%')
move "%inputfolder%\%%G" "%outputfolder%\dest"
}

Percarità parte l'amico Daniele in un forum di programmazione qualcun altro si fosse fatto avanti..:mbe:
wow... eppure, se non sbaglio, il forum è quello giusto...non penso di aver postato in un forum di "Nouvelle Cuisine":rolleyes:

FreeMan
11-12-2014, 19:22
Percarità parte l'amico Daniele in un forum di programmazione qualcun altro si fosse fatto avanti..:mbe:
wow... eppure, se non sbaglio, il forum è quello giusto...non penso di aver postato in un forum di "Nouvelle Cuisine":rolleyes:

Forse confondi un forum con un help desk.. su nessun forum di discussione la risposta è garantita, ne può essere pretesa e con certi toni.

Domandare è lecito, rispondere è cortesia (cit.)

CLOSED!!

>bYeZ<