MVV

|
Posted: Tue Sep 07, 2010 10:15 Post subject: |
|
|
А я батник написал, извратился.
Code: | @echo off
if -%1==- echo Use %%L as first parameter [and number of files in subdirs as second]! & pause & goto :EOF
setlocal
set fileno=0
set fldrsz=%2
if -%fldrsz%==- set fldrsz=50
for /F "usebackq delims=" %%f in (%1) do call :do_action "%%f"
echo.
echo Moved %fileno% files.
pause
goto :EOF
:do_action
set /a fldrno=1000000000 + fileno / fldrsz
set fldrnm=%fldrno:~-5%
echo Moving %1 to subfolder %fldrnm%...
if not exist %fldrnm% md %fldrnm%
move %1 %fldrnm%
set /a fileno=fileno + 1
|
Первый параметр - %L, второй - число файлов в создаваемых подпапках. Если не задано, используется 50. Папка запуска должна быть текущей (т.е. поле рабочей папки пусто).
При желании число нулей в именах папок можно изменить, увеличив или уменьшив цифру в строке set fldrnm=%fldrno:~-5% - но не следует делать ее больше, чем нулей в числе, указанном в строке set /a fldrno=1000000000 + fileno / fldrsz, а также не нужно делать ее меньше, чем хватит для имен папок - тогда имена папок будут повторяться из-за отбрасывания высших разрядов.
Но похоже, тут сложности с русскими буквами в именах. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|