2014-09-11 2 views
0

У моей компании много автоматизации, которая работает в течение ночи через пакетные скрипты. В основном просто копирование новых файлов здесь и там. То, что я ищу, - это способ запустить проверку дат создания файла/дат последней модификации после запуска всех сценариев, чтобы все было в актуальном состоянии. Он будет в основном искать конкретный файл на общем диске или UNC-пути. Если этот файл меньше 24 часов, ничего не делайте. Если файл темы OLDER превышает 24 часа, введите триггер. У меня уже есть VBS, чтобы отправить электронное письмо, чтобы добавить это в конце инструкции IF. Любая помощь приветствуется.Ищите пакетный скрипт для мониторинга последней даты изменения файлов

ответ

0

вы можете получить файл модификации дату с for %a in (file.txt) do echo %~ta (удвоить % в пакетных файлах)

+0

Это определенно вызывает меня на правильном пути. Однако, если я запустил команду в пакетном файле, я не получаю результат. "для% a in (C: \ PROJECTS \ results.txt) сделать echo% ~ ta> C: \ PROJECTS \ NAVIS_MONITOR.txt". Если я скопирую и вставляю строку в подсказку cmd, она отлично работает, а затем я могу сделать FC и получить то, что мне нужно. Но когда я запускаю эту строку из пакетного файла, я ничего не получаю. –

+0

В пакетном файле '%%' должны быть записаны дважды, а не просто '%'. См. Справку по команде 'for' output при входе в окно командной строки либо' help for', либо 'for /?'. – Mofi

+0

Спасибо за помощь. Это заставило меня идти. –

1

Есть способы и средства ...

Вот процедура, которая будет делать что-то вдоль линий вы очертание:

@ECHO Off 
SETLOCAL 

:: remove variables starting $ 
FOR /F "delims==" %%a In ('set $ 2^>Nul') DO SET "%%a=" 
SET "sourcedir=U:\sourcedir" 
SET "runflag=runflag.###" 
SET "foundrun=" 
ATTRIB -h "%sourcedir%\runflag.###" 
FOR /f "tokens=1,2delims=:" %%a IN ('dir /b /od /a-d "%sourcedir%"^|findstr /n /r "^"') DO (
IF %%b==%runflag% SET foundrun=Y 
IF NOT DEFINED foundrun SET "$%%a=%%b" 
) 
(
ECHO(Old file list 
FOR /F "tokens=1,2delims==" %%a In ('set $ 2^>Nul') DO ECHO(%%b 
)>"%sourcedir%\%runflag%" 
ATTRIB +h "%sourcedir%\runflag.###" 
IF DEFINED $1 ECHO(send email 
GOTO :EOF 

Вы должны были бы изменить установку sourcedir в соответствии с вашими обстоятельствами. runflag - просто удобное имя файла.

Объект здесь предназначен для поиска файлов, которые не были обновлены с момента предыдущего запуска этой процедуры. Это преодолевает фиксированную идею «24 часа» - в случае праздников, выходных дней и т. Д.

Имена файлов, которые не изменились, были бы в runflag.### - идеально подходят для использования в почтовой программе, например blat.

Я играл с флагом hidden здесь, чтобы скрыть файл от «этого не должно быть здесь - я не понимаю, я его удалю». (те, кто воспринимает это отношение, часто могут быть побеждены простым + H и + R). Улучшите или удалите команды ATTRIB, как вы.

0

Изменить \\server\share и использовать имя файла вместо filename.ext, и это должно запустить файл email.bat, если файл старше 1 дня.

robocopy "\\server\share" "%temp%" filename.ext /minage:1 /L |find " New File " >nul && call email.bat 
Смежные вопросы