Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   CMD проверка создания файла за (сегодня вчера) с созданием флагового файла (http://forum.oszone.net/showthread.php?t=296775)

yamixon 12-03-2015 12:41 2481703

CMD проверка создания файла за (сегодня вчера) с созданием флагового файла
 
Добрый день.
Прошу помощи в написания скрипта.
В папке 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 файла сделать по аналоги будет не проблема.
но файл создается в любом случае...

Georgio 13-03-2015 04:50 2482023

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


Код:

@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


.



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

yamixon 13-03-2015 08:38 2482043

что то не так,в папке 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 файлы быть прописаны по единице.

Georgio 13-03-2015 14:05 2482205

yamixon,


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

2) я, очевидно, поменял местами "0" и "1", то есть соответствующая строка должна выглядеть так:
Код:

  ) do @>"%%i.txt" (if %%o lss 25 (echo 1) else (echo 0)))
;

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

yamixon 13-03-2015 15:56 2482248

Спасибо за помощь.
есть нюанс в папке 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 дня назад.

yamixon 17-03-2015 08:40 2483708

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


Время: 07:15.

Время: 07:15.
© OSzone.net 2001-