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

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

krbmoney 25-03-2012 14:43 1886342

Переместить папки в папки
 
Здравствуйте, прошу помощи в создании батника.

В одной папке имеется множество папок с файлами, нужно определенное кол-во (допустим 500 или лучше рендомом от 400 до 500) папок раскидать в новые директории (Название значение не имеет, можно цифровые).

Пример: в одной папке 10.000 папок, нужно рэндомно все эти 10.000 переместить в, допустим, 21 папку.

Iska 25-03-2012 20:29 1886555

Практического применения сему не вижу.

krbmoney 25-03-2012 20:42 1886567

А реализовать такое все же можно или нельзя?

Iska 25-03-2012 23:01 1886685

Можно. Но не зная цели — не вижу смысла заниматься реализацией сего.

krbmoney 26-03-2012 05:06 1886771

Цель - упростить работу с папками. Было бы удобней, если все папки будут более компактно расположены в других папках.

Iska 26-03-2012 05:48 1886777

Это не цель. Не вижу смысла один хаос менять на другой.

Расскажите про область применения, в которой требуется 10000 папок в одной папке.

krbmoney 26-03-2012 06:52 1886782

У меня на внешнем жестком диске есть папка, в которую наскачивал множество чего. Хочу все это обработать, вручуню просмотреть, допустим в день я могу просмотреть 200 папок. Эксплорер очень долго открывает все. Нужно все раскидать по папкам, чтобы удобней стало. Знал бы в какой папке был и что делал.

Iska 26-03-2012 08:14 1886792

Цитата:

Цитата krbmoney
Эксплорер очень долго открывает все. »

Первое открытие в Проводнике папки с таким количеством папок, действительно, занимает некоторое, не слишком большое время задержки. Последующие открытия (в том же сеансе) — нет. Открытие папки в Far Manager'е не вызвало задержек и с первого раза. В Total Commander время задержки примерно соответствует Проводнику, но — при каждом входе в папку.

Как-то так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=H:\003
set sDestFolder=H:\004

set /a lGroup = 400

set /a lCount = 0
set /a lNewFolder = 0

for /d %%i in ("%sSourceFolder%\*.*") do (
        set /a lCount += 1
        set /a lMod = lCount %% lGroup
       
        if !lMod! equ 1 (
                set /a lNewFolder += 1
                set sTempValue=0000!lNewFolder!
                set sNewFolder=%sDestFolder%\!sTempValue:~-5!
                md "!sNewFolder!" && echo Create folder [!sNewFolder!]
        )
        move "%%i" "!sNewFolder!" && echo  Move folder [%%i]
)

endlocal
exit /b 0

где:

* «sSourceFolder» — исходная папка, откуда будут браться папки;
* «sDestFolder» — целевая папка, куда будут переноситься папки по группам из папки «sSourceFolder»;
* «lGroup» — число папок для переноса в одной группе.

Скрипт рассчитан на создание до 10000 групп. Новые папки, куда будет производиться перенос, именуются цифрами: «00001», «00002» и т.д.

krbmoney 26-03-2012 09:01 1886814

Круто, спасибо!


Время: 17:46.

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