Holy_Ghost
Дата: 26.12.2007 14:20:49
Здравствуйте, уважаемые
Вопрос такой: как сравнить размеры 2-х каталогов между собой?
Holy_Ghost
Дата: 26.12.2007 15:10:25
dir /c выдает инфо о размере каталога
как этим можно воспользоваться
Green2
Дата: 26.12.2007 15:11:08
Holy_Ghost> Вопрос такой: как сравнить размеры 2-х каталогов между собой?
Что интересует? Одинаковые файлы
или одинаковый размер в мерабайтах или самые большие каталоги?
--

Posted via ActualForum NNTP Server 1.4
Holy_Ghost
Дата: 26.12.2007 15:25:54
Кратко
Хочу сравнить размеры двух каталогов, находящихся двух на разных серверах.
И в случае, если их размеры одинаковы, то выслать сообщение на почту.
Biz©
Дата: 26.12.2007 22:46:58
| cmpds.cmd |
@echo off if "%2" == "" ( echo Usage: cmpds dir1 dir2 goto :EOF ) call :getsize "%~1" set size1=%tot% call :getsize "%~2" set size2=%tot% echo dir1 = %size1% echo dir2 = %size2% echo Total: if "%size1%" == "%size2%" (@echo %1 == %2) else @echo %1 =/= %2 set tot= set size1= set size2= goto :EOF
:getsize set /a tot=0 for /f "delims=" %%I in ('dir /s/b/a %1') do @call :1 "%%I" rem echo total=%tot% goto :EOF
:1 if not "%~z1" == "" set /a tot=tot+%~z1 goto :EOF |
Holy_Ghost
Дата: 27.12.2007 07:01:07
Спасибо Biz©!!!
вот рабочий вариант:
2.bat:
@echo off
if "%2" == "c:\temp1" (
echo Usage: cmpds dir1 dir2
goto :EOF
)
call :getsize "c:\temp1"
set size1=%tot%
call :getsize "c:\temp2"
set size2=%tot%
echo dir1 = %size1%
echo dir2 = %size2%
echo Total:
if "%size1%" == "%size2%" (c:\perl\bin\perl.exe c:\mail\1.pl) else @echo %1 =/= %2
set tot=
set size1=
set size2=
goto :EOF
:getsize
set /a tot=0
for /f "delims=" %%I in ('dir /s/b/a %1') do @call :1 "%%I"
rem echo total=%tot%
goto :EOF
:1
if not "%~z1" == "" set /a tot=tot+%~z1
goto :EOF
вот файл 1.pl:
use Net::SMTP;
$smtp = Net::SMTP->new('mail.com'); # connect to an SMTP server
$smtp->mail( 'user@mail.com'); # use the sender's address here
$smtp->to('user@mail.com'); # recipient's address
$smtp->data(); # Start the mail
# Send the header.
$smtp->datasend("To: user@mail.com\n");
$smtp->datasend("From: user@mail.com\n");
$smtp->datasend("\n");
# Send the body.
$smtp->datasend("Hello admin!\n");
$smtp->datasend("Backup complete successfully\n");
$smtp->dataend(); # Finish sending the mail
$smtp->quit; # Close the SMTP connection
Для того чтобы отправить сообщение по почте, установил Active Perl.
Надеюсь кому окажется полезным.
Holy_Ghost
Дата: 28.12.2007 08:49:25
еще вопрос:
почему этот же скрипт совершенно не хочет выполняться под Win 2003 Enterprise Edition ?
Holy_Ghost
Дата: 28.12.2007 09:16:51
эта строка как я понимаю не работает корректно, когда размеры каталогов превышают гигабайты
if not "%~z1" == "" set /a tot=tot+%~z1
bodrox
Дата: 28.12.2007 11:42:56
Может, попробовать заюзать nnCron?
aleks2
Дата: 28.12.2007 11:54:05
Можно пролбовать даже ASM - некоторым не помогает...
dir \\server1\folder\*.*|find " байт "|find " файлов " >1.tmp
dir \\server2\folder\*.*|find " байт "|find " файлов " >2.tmp
fc 1.tmp 2.tmp
if NOT ERRORLEVEL 0 echo НЕ РАВНЫ!!!!!!!!!!!!!