Войти

Показать полную графическую версию : [решено] Скрипт, копирующий, в зависимости от размера файлов


XSubZero
22-04-2013, 13:23
Помогите создать скрипт, копирующий из одной папки, в другую, в зависимости от размера файла. Например: В папке c:\Test1\ лежит куча файлов, необходимо скриптом скопировать в папку c:\Test\2\ все файлы, размер которых более 1000 байт.

Foreigner
22-04-2013, 18:33
@echo off

pushd "c:\test1"
for /f "tokens=*" %%i in (' dir /b /a-d ') do if %%~zi gtr 1000 copy "%%i" "C:\test2"
popd

zion87
22-04-2013, 18:45
так

@Echo Off
Set forP=c:\Test1\
Set fromP=c:\Test\2\
For /f "delims=" %%H In ('dir /s /b /a-d "%forP%*.*"') Do (
If %%~zH GEQ 1000 Copy "%%H" %fromP%
)
Exit

Vadikan
22-04-2013, 19:22
На PowerShell короче получится :)

dir c:\Test1\ | where {$_.length -gt "1000"} | copy -destination c:\Test\2\

megaloman
22-04-2013, 19:46
Без Dir @Echo Off

Set From=D:\Test1
Set To=D:\Test\2

Set /A Size=1000
rem Максимальный размер файла не должен превышать 2147483647

Set Oper=1
rem Если Oper=1 - копирую файл, =0 -перемещаю, иначе ничего не делаю

FOR %%f IN ("%From%\*.*") DO (
If %Oper%==1 If %%~zf GTR %Size% Copy "%%~f" "%To%\" >nul
If %Oper%==0 If %%~zf GTR %Size% Move /Y "%%~f" "%To%\" >nul
)В одну строчку из командного окна копирование FOR %f IN ("D:\Test1\*.*") DO If %~zf GTR 1000 Copy "%~f" "D:\Test\2\"Не намного длиннее чем в PowerShell, а то и короче

Вы указали ключ /S в Dir, если в папке есть подпапки, сольём всё в одну папку, хотя это м б и не существенно

XSubZero
23-04-2013, 08:45
Большое спасибо всем за помощь!




© OSzone.net 2001-2012