@tim2172

Создать проверку существуют ли файлы или папки в определенном каталоге?

Помогите написать скрипт, проверки существования в папке, файлов или папок, а так же проверка дат изменения этих файлов и папок.
Существует служба что создает со временем файлы и после собирают их в папку -C:\Papka, но иногда служба отваливается, требуется создать проверку на bat, при запуске, проверить есть ли файлы и папки в папке C:\Papka, проверить дату изменения и если оно позже 4 часов удалить все в папке C:\Papka.
Ничего не смог дельного найти.
  • Вопрос задан
  • 4324 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Shaggy72
Проверка файла как-то так:

@echo off
:loop
if not exist "c:\Papka\somefile" Goto Loop
echo "finish"
Ответ написан
@res2001
Developer, ex-admin
Начну с конца: cmd не поддерживает работу с датами ни в каком виде.
Дату последнего изменения файла получить можно, но это будет дата в текстовом виде. Дальше нужно вручную выделять все составляющие даты и с помощью скудных возможностей set /a и кучи if вычислять была она позже 4 часов или нет. Сделать можно, но это будет ... "не технологично" :-)
В свое время я писал скрипт на bat переводящий дату в timestamp и обратно. Могу поискать, если заинтересует.
Я бы предложил вам использовать скрипт на powershell, vbs, js - все они умеют работать с датами. Реализовать на них вашу задачу довольно просто.

Проверка существования файлов и подпапок в заданной папке:
set "indir=c:\papka"
:: Проверка существования файлов:
for /f "tokens=* delims=" %%a in ('dir /b /a-d "%indir%\*" ') do (
  echo.Есть файл: %%~fa
)
:: Проверка существования каталогов:
for /f "tokens=* delims=" %%a in ('dir /b /ad "%indir%\*" ') do (
  echo.Есть каталог: %%~fa
)


Если служба "отваливается" путем завершения процесса службы, то проще проверять существует ли запущенный процесс с помощью tasklist и ее фильтров. Смотрите tasklist /?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы