Войти

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


dark-------13
19-03-2012, 13:40
Здравствуйте,

Есть скрипт - который переносит файлы, если размер файлов больше либо равен указанному в скрипте значению (GEQ 40000), но делает это не правильно (захватывает файлы меньше указанного значения), как поправить скрипт - чтобы только файлы больше указанного в скрипте значения переносились в указанный каталог ?


@ECHO OFF
FOR %%i IN (*.*) do CALL :MVFILE "%%i"
GOTO :EOF

:MVFILE
SET SIZEFILE=%~z1
IF %SIZEFILE% GEQ 40000 (
move "c:\test\*.txt" "c:\test\2\"
ECHO %1, size=%SIZEFILE%
) ELSE (
move "c:\test\*.txt" "c:\test\3\"
ECHO %1, size=%SIZEFILE%
)
GOTO :EOF

gora
19-03-2012, 14:12
dark-------13, попробуйте так:@ECHO OFF
FOR %%i IN (*.*) do CALL :MVFILE "%%i"
GOTO :EOF

:MVFILE
If "%~z1"=="" GOTO :EOF
IF %~z1 GEQ 40000 (
move %1 "c:\test\2\"
ECHO %1, size=%~z1
) ELSE (
move %1 "c:\test\3\"
ECHO %1, size=%~z1
)
GOTO :EOF

dark-------13
19-03-2012, 14:16
Почему то переноситься сам батник- в папку 3

gora
19-03-2012, 14:19
Почему то переноситься сам батник- в папку 3 »
Наверно потому, что Вы так задали условия. Размер его < 40000 и лежит он у Вас в папке со всеми файлами.

Если у Вас должны переносится только файлы .txt, то поправьте строку:FOR %%i IN (*.txt) do CALL :MVFILE "%%i"

dark-------13
19-03-2012, 14:31
Самое интересное, что батник лежит в отдельной папке.

Убрал из кода строки все заработало как нужно - спасибо "gora" !

) ELSE (
move %1 "c:\test\3\"
ECHO %1, size=%~z1
)




© OSzone.net 2001-2012