Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - CMD проверка создания файла за (сегодня вчера) с созданием флагового файла

Ответить
Настройки темы
CMD/BAT - CMD проверка создания файла за (сегодня вчера) с созданием флагового файла

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: yamixon
Дата: 13-03-2015
Добрый день.
Прошу помощи в написания скрипта.
В папке c:\temp находятся файлы с именами SCAN_1_*(далее могут идти различные символы),именами SCAN_2_*(далее могут идти различные символы),именами SCAN_3_*(далее могут идти различные символы).

Необходимо проверить что файлы с этими именами создаются текущим(вчерашним(актуальность 24 часа)) днем. если все ок то формируются 3 файла 1.txt,2.txt,3.txt с информацией внутри: 1- все ок, 0- файл создан ранее 25часов

что я получил:
Код: Выделить весь код
@echo off
:: Поиск самого молодого файла.

for /F "delims=" %%t in ('dir  /b /od "c:\temp\SCAN_1_*.pdf"') do set Youngest=%%t
SetLocal

::путь и имя файла
set flag="c:\temp\%Youngest%"
del c:\temp\*.txt
echo %Youngest% > c:\temp\file_name.txt
if exist "%flag%" for %%A in ("%flag%") do echo %%~tA |>nul find "%date%" || >nul  echo 0 > c:\temp\1.txt
 

::но файл создается в любом случае... где то тут ошибка.. уж 3 день маюсь не могу понять.
if exist "%flag%" for %%A in ("%flag%") do echo %%~tA |>nul find "%date%" || >nul  echo 0 > c:\temp\1.txt
остальные проверки на 2 файла сделать по аналоги будет не проблема.
но файл создается в любом случае...

Отправлено: 12:41, 12-03-2015

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Полный код (для обработки всех трёх групп файлов сразу):


Код: Выделить весь код
@echo off& pushd "C:\temp"

>"file_name.txt" (for /l %%i in (1 1 3) do @for /f "tokens=1-3*" %%j in (
  'for /f "skip=4 delims=" %%n in ('dir/a-d/-c/o-d/tc "SCAN_%%i_*.pdf"'^) do @echo %%n^& exit/b'
 ) do @echo %%m& for /f %%o in (
   'mshta "vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(DateDiff("H","%%j"&Chr(32)&"%%k",Now))&Close()"'
  ) do @>"%%i.txt" (if %%o lss 25 (echo 0) else (echo 1)))

popd& exit/b 0

.



Удалять имеющиеся текстовые файлы не обязательно, так как они перезаписываются.
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:50, 13-03-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


что то не так,в папке 3 файла:
SCAN_1_8917_000 дата создания 13.03.2015 8.25
SCAN_2_8914_000 дата создания 11.03.2015 14.12
SCAN_3_8915_000 дата создания 12.03.2015 9.49
появляется файл
file_name в котором:
SCAN_1_8917_000.pdf
SCAN_2_8914_000.pdf
SCAN_3_8915_000.pdf
также появляются файлы 1,2,3 .txt

но в них нули, а должно быть в 1 и 3 файлы быть прописаны по единице.

Отправлено: 08:38, 13-03-2015 | #3


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


yamixon,


1) из Вашего первого сообщения очень трудно визуально получать нужную информацию, отредактируйте его, пожалуйста, используя теги "code" (см. символ "#"), деление на абзацы и убрав дублирование уже изложенного;

2) я, очевидно, поменял местами "0" и "1", то есть соответствующая строка должна выглядеть так:
Код: Выделить весь код
  ) do @>"%%i.txt" (if %%o lss 25 (echo 1) else (echo 0)))
;

3) тестируйте код на оригинальной папке с файлами, а не на её копии, так как обычное копирование не может реплицировать дату создания.

Отправлено: 14:05, 13-03-2015 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо за помощь.
есть нюанс в папке c:\temp
каждый день формируется по 3 файла SCAN_(1-3)_*
надо брать самый молодой файл из имеющихся
и его уже проверять когда он создан (не старше 25 часов)

Код: Выделить весь код
 ) do @>"%%i.txt" (if %%o lss 25 (echo 1) else (echo 0)))
так тоже не работает.
файл 1,2,3.txt при разных комбинациях создания файла в таком варианте всегда 1
даже если файл создан 3-4 дня назад.

Отправлено: 15:56, 13-03-2015 | #5


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


все в порядке, действительно были проблеммы при копировании в темповую папку.
спасибо за помощь..

Отправлено: 08:40, 17-03-2015 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - CMD проверка создания файла за (сегодня вчера) с созданием флагового файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Проверка папки на наличие файлов за сегодня FantomasAnand Скриптовые языки администрирования Windows 1 26-02-2015 04:04
CMD/BAT - Проверка времени создания файла havenofear Скриптовые языки администрирования Windows 1 17-06-2012 01:06
CMD/BAT - Скачивание файла и проверка на отличия от файла на сервере. maslovt Скриптовые языки администрирования Windows 2 08-05-2010 19:54
CMD/BAT - [решено] Помогите запустить CMD-файл из CMD-файла с параметрами Oleg48 Скриптовые языки администрирования Windows 2 18-11-2009 11:08
ThinkPad вчера и сегодня. Lenovo VS IBM treehel Ноутбуки 4 09-11-2008 11:37




 
Переход