PDA

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


Elven
01-04-2015, 17:06
Имеются два сервака с шарами на них почти одновременно падают папки с одинаковым названием. (содержимое разное, совпадает только название папок)
задача:
в том случае если дата изменения папок старше 5 суток - дата последнего изменения на текущем сервере + имя папки + комментарий в файл
если отсутствует папка с таким именем на другом сервере - имя сервера без папки + имя папки + комментарий в файл
и наконец сравнить дату изменения папок с возможной погрешностью в сутки (т.е. если на одной шаре папка была изменена 01.04.2015 а на втором 31.03.2015 - пропускаем, если разница больше - имя сервера с меньшей датой + имя папки + комментарий в файл)

батник будет запускаться на обоих серверах т.е. для каждого запуска эталоном считается текущая машина.


т.о. для варианта
\\server1\share\
dir1 - 01.04.2015
dir2 - 01.04.2015
dir3 - 01.04.2015
dir4 - 23.03.2015
dir5 - 31.03.2015


\\server2\share\
dir1 - 28.03.2015
dir2 - 31.03.2015

dir4 - 20.03.2015
dir5 - 01.04.2015

вывод в файл при запуске на server1 будет приблизительно таким:

23.03.2015 - dir4 - папка устарела
server2 - dir3 - папка отсутствует
server2 - dir1 - рассинхронизация папок



Пардоньте за такую задачу, но у меня уже мозг склеился. По частям вроде как и просто, а все вместе...

Elven
06-04-2015, 12:46
не смотря на дату размещения топика мне действительно нужна помощь в этой байде.
пока не работает такая штука:
@echo off
if exist d:\logs\result.log del /f /q d:\logs\result.log
set ldir=d:\shares
set rdir=\\serv2\shares
pushd=%ldir%
FOR /f %%a IN ('dir * /b /a:d') do (
set da=%%~ta
FOR /f %%b IN ("%rdir%\%%~na") do (
set db=%%~tb

if not %da:~6,4%%da:~3,2%%da:~0,2%==%db:~6,4%%db:~3,2%%db:~0,2% (
if %da:~6,4%%da:~3,2%%da:~0,2% LSS %db:~6,4%%db:~3,2%%db:~0,2% (
echo serv11^\shares^\%%~na not relevant >> d:\logs\result.log ) ELSE (
echo serv22^\shares^\%%~na not relevant >> d:\logs\result.log
))))
popd

Elven
07-04-2015, 13:32
Оставил пока так.
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set today=%date:~6,4%%date:~3,2%%date:~0,2%
if exist d:\result.log del /f /q d:\result.log
set ldir=d:\shares\
set rdir=\\serv2\shares
pushd=%ldir%
FOR /f %%a IN ('dir * /b /a:d') do (
set da=%%~ta
set dda=!da:~6,4!!da:~3,2!!da:~0,2!
FOR /f %%b IN ("%rdir%\%%~na") do (
set db=%%~tb
set ddb=!db:~6,4!!db:~3,2!!db:~0,2!
set /a tdda=!dda!+1
if !tdda! GEQ !today! (
if not !dda!==!ddb! (
if !dda! LSS !dd! (
echo serv1^\shares^\%%~na not synchronized >> d:\logs\result.log ) ELSE (
echo serv2^\shares^\%%~na not synchronized >> d:\logs\result.log
)
)
) ELSE (
echo %%~na not relevant >> d:\logs\result.log)
)
)
popd




© OSzone.net 2001-2012