Войти

Показать полную графическую версию : [решено] нужно скапировать большое каличество фалов 100 000


jannaly
22-05-2012, 14:23
Нужно скапировать большое каличество фалов имено 100 000 из 9 000 000 .... если можно чтобы код был как можно быстродействуйший СПАСИБО!

cameron
22-05-2012, 15:02
xcopy /?

jannaly
22-05-2012, 15:43
не просто капирование а имено каличество 100 000 файлов из имеюшийся 1 000 000 заставив капировать 100 000 файлов в другую директорию из имеюший 1 000 000 файлов.. вроде ясно написано !?

можно както так?... знаю что будет очень долго капировать потому что присуствует goto и процесор будет в нагруске... есть какойто код быстродействуйший?
:forum
set /A n+=1
copy %n% *.jpg
goto forum

но нужно указать каличество.. есть код такой? ((

Iska
22-05-2012, 16:25
Примерно так (не проверялось проверил, поправил):
@echo off
setlocal enableextensions enabledelayedexpansion

set sFolderSource=c:\FolderWithOneMillionFiles
set sFolderDest=c:\FolderForOneHundredThousand

set /a iCount = 0

for /f "delims==" %%i in ('dir "%sFolderSource%\*.*"/b /a:-d') do (
set /a iCount += 1

if !iCount! gtr 100000 goto :Out

>nul copy /y "%sFolderSource%\%%i" "%sFolderDest%\*.*"
)

:Out

endlocal
exit /b 0

знаю что будет очень долго капировать потому что присуствует goto и процесор будет в нагруске... есть какойто код быстродействуйший? »
Не там ищете. Нагрузка будет при самом копировании.

jannaly
22-05-2012, 16:54
не получается сделал 2 папки в локальном "С" FolderForOneHundredThousand FolderWithOneMillionFiles вставил маленькое каличество фалов 100 в FolderWithOneMillionFiles при капирование нифига не делает!? помоги разобратся плиз!


@echo on
setlocal enableextensions enabledelayedexpansion

set sFolderSource=c:\FolderWithOneMillionFiles
set sFolderDest=c:\FolderForOneHundredThousand

set /a iCount = 0

for /f %%i in ('dir "%sFolderSource%\*.*"/b /a:-d') do (
set /a iCount +=1

if !iCount! gtr 9 goto :Out

copy /y "%%i" "%sFolderDest%\*.*"
)

:Out

endlocal
pause
exit /b 0

на Windows(R) Server 2003, Enterprise сижу

Iska
22-05-2012, 17:46
jannaly, проверил, поправил (http://forum.oszone.net/post-1920511.html#post1920511). Пробуйте.

yurfed
22-05-2012, 17:56
set sFolderSource=c:\FolderWithOneMillionFiles
set sFolderDest=c:\FolderForOneHundredThousand
Позаковырестей имена папок не получилось придумать?
Ограничьте имена папок до 8 символов и без пробелов.

Iska
22-05-2012, 18:12
yurfed, предпочитаю говорящие имена файлов. Ну, а в данном случае, так и просто «подмывало» назвать. Была ещё, правда, идея обозвать одну из папок «стотыщпитсот»… ;).

Ограничьте имена папок до 8 символов и без пробелов. »
Зачем? А…, ясно. Поправил код (http://forum.oszone.net/post-1920511.html#post1920511) ещё раз. Всё время забываю :(.

jannaly
22-05-2012, 18:13
есть один минус в коде имена ток такие фалы 8 разрядный как их там ишё называют? "gfdfgdfg.XM" ... а если такие прописать "Копия gfdfgdfg.XM" то код ваше не работает проверял! как решить проблемку?

при капирование c:\FolderWithOneMillionFiles в c:\FolderForOneHundredThousand

!!!РАБОТАЕТ!!! но почему move командочка не работает вроде как похоже на copy

плиз!!!

jannaly
22-05-2012, 18:48
Добавить move у меня не получается помогите! :(

Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sFolderSource=c:\FolderWithOneMillionFiles
set sFolderDest=c:\FolderForOneHundredThousand
set /a iCount = 0
for /f "delims==" %%i in ('dir "%sFolderSource%\*.*"/b /a:-d') do (
set /a iCount += 1
if !iCount! gtr 100000 goto :Out
>nul copy /y "%sFolderSource%\%%i" "%sFolderDest%\*.*"
)
:Out
endlocal
exit /b 0 »

yurfed
22-05-2012, 19:26
Добавить move у меня не получается помогите! »
Перемещение одного или более файлов:
MOVE [/Y | /-Y] [диск:][путь]имя_файла1[,...] назначение

Y - перезапись без подтверждения
-Y перезапись с подтверждением

Замените copy на move

jannaly
22-05-2012, 19:30
а этом коде как сделать? так чтоли? а не работает ((


@echo on
setlocal enableextensions enabledelayedexpansion

set sFolderSource=c:\FolderWithOneMillionFiles
set sFolderDest=c:\FolderForOneHundredThousand

set /a iCount = 0

for /f "delims==" %%i in ('dir "%sFolderSource%\*.*"/b /a:-d') do (
set /a iCount += 1

if !iCount! gtr 24 goto :Out

move /y "%sFolderSource%\%%i" "%sFolderDest%\*.*"
)

:Out

endlocal
pause
exit /b 0

yurfed
22-05-2012, 19:41
jannaly, действительно не работает :(

jannaly
22-05-2012, 19:58
а почему? :( есть ришение?

kiripanda
22-05-2012, 20:24
move /y "%sFolderSource%\%%i" "%sFolderDest%\"

jannaly
22-05-2012, 21:25
Пасибки! работает!!!




© OSzone.net 2001-2012