Компьютерный форум 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=259161)

XSubZero 22-04-2013 13:23 2137552

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

Foreigner 22-04-2013 18:33 2137753

Код:

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

так
Код:

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

На PowerShell короче получится :)

Код:

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

megaloman 22-04-2013 19:46 2137796

Без 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, а то и короче

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

XSubZero 23-04-2013 08:45 2138053

Большое спасибо всем за помощь!


Время: 14:02.

Время: 14:02.
© OSzone.net 2001-