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

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

jannaly 22-05-2012 14:23 1920382

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

cameron 22-05-2012 15:02 1920417

xcopy /?

jannaly 22-05-2012 15:43 1920468

не просто капирование а имено каличество 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 1920511

Примерно так (не проверялось проверил, поправил):
Код:

@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

Цитата:

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

Не там ищете. Нагрузка будет при самом копировании.

jannaly 22-05-2012 16:54 1920535

не получается сделал 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 1920573

jannaly, проверил, поправил. Пробуйте.

yurfed 22-05-2012 17:56 1920583

Цитата:

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

Iska 22-05-2012 18:12 1920595

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

Цитата:

Цитата yurfed
Ограничьте имена папок до 8 символов и без пробелов. »

Зачем? А…, ясно. Поправил код ещё раз. Всё время забываю :(.

jannaly 22-05-2012 18:13 1920596

есть один минус в коде имена ток такие фалы 8 разрядный как их там ишё называют? "gfdfgdfg.XM" ... а если такие прописать "Копия gfdfgdfg.XM" то код ваше не работает проверял! как решить проблемку?

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

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

плиз!!!

jannaly 22-05-2012 18:48 1920617

Добавить move у меня не получается помогите! :(

Цитата:

Цитата Iska
Код:
@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 1920642

Цитата:

Цитата jannaly
Добавить move у меня не получается помогите! »

Цитата:

Перемещение одного или более файлов:
MOVE [/Y | /-Y] [диск:][путь]имя_файла1[,...] назначение

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

jannaly 22-05-2012 19:30 1920649

а этом коде как сделать? так чтоли? а не работает ((


@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 1920655

jannaly, действительно не работает :(

jannaly 22-05-2012 19:58 1920671

а почему? :( есть ришение?

kiripanda 22-05-2012 20:24 1920686

Код:

move /y "%sFolderSource%\%%i" "%sFolderDest%\"

jannaly 22-05-2012 21:25 1920714

Пасибки! работает!!!


Время: 19:15.

Время: 19:15.
© OSzone.net 2001-