CMD/BAT - Батник для запуска chkdsk по первым числам месяца

Аватара пользователя
PowerZ

CMD/BAT - Батник для запуска chkdsk по первым числам месяца

Сообщение PowerZ »

Всех приветствую!



Нужен батник, который будет запускаться через GPO, и выполнять следующие операции только по 01 числам:



1. Определение даты

2. Если дата = 01, то выполняется команда “echo y|chkdsk %systemdrive% /f /x” и c последующей перезагрузкой компьютера.

3. Если дата не ровняется 01, то ничего не происходит.



помогите пожалуйста, с батником.
Аватара пользователя
Georgio

Re: CMD/BAT - Батник для запуска chkdsk по первым числам месяца

Сообщение Georgio »

Код:

Код: Выделить всё

@echo off
for /f "delims=./" %%i in ("%date%") do (
 for /f "tokens=* delims=0 " %%j in ("%%i") do (
  if %%j==1 (
   echo y| chkdsk %systemdrive% /f /x
   )
  )
 )
exit /b
Аватара пользователя
PowerZ

Re: CMD/BAT - Батник для запуска chkdsk по первым числам месяца

Сообщение PowerZ »

Вроде вопрос решен, но другим методом:

1. Отказался от запуска по первым числам (тут не так важно именно по первым числам, а главное один раз в месяц).

2. Нашел в сети альтернативный
батник
для удаления файла по истечению срока, в данном случае замена "forfiles"



Батник при запуске системы (выполняется удаление файла "chkdsk.log", по истечению 30 дней):


читать дальше »




Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set N=30
set MASK=chkdsk.log
set SOURCE=%SYSTEMDRIVE%
call :raschet %date% days_to_today
pushd %SOURCE%
for /f "tokens=*" %%a in ('dir /b /a:-d %MASK%') do (
   set filedate=%%~ta
   call :raschet !filedate:~0,10! days_to_date_of_file
   set /a raznitsa=%days_to_today%-!days_to_date_of_file!
   if !raznitsa! gtr %N% del /q "%%a"
)
popd
exit
:raschet
for /f "delims=. tokens=1-3" %%a in ('echo %~1') do (
   set /a years=%%c*365+%%c/4
   set /a prev_year=%%c-1
   set /a result_year=%%c/4
   set /a result_prev_year=!prev_year!/4
   set /a vis=!result_year!-!result_prev_year!
   if !vis!==1 (
      if %%b==01 set /a years=!years!-1
      if %%b==02 set /a years=!years!-1
   )
   if %%b==01 set months=0
   if %%b==02 set months=31
   if %%b==03 set months=59
   if %%b==04 set months=90
   if %%b==05 set months=120
   if %%b==06 set months=151
   if %%b==07 set months=181
   if %%b==08 set months=212
   if %%b==09 set months=243
   if %%b==10 set months=273
   if %%b==11 set months=304
   if %%b==12 set months=334
   set days=%%a
   set firstsym=!days:~0,1!
   if !firstsym!==0 set days=!days:~1,1!
   set /a %~2=!years!+!months!+!days!
)







Батник при завершение работы системы (выполняется проверка существования файла "chkdsk.log", если нет, то выполняет chkdsk, и при следующем перезагрузке будет произведена проверка и исправление диска на ошибки).




читать дальше »




Код:

Код: Выделить всё

@echo off
if not exist "%systemdrive%\chkdsk.log" (
   echo y|chkdsk %systemdrive% /f /x > %systemdrive%\chkdsk.log
)
exit /b
Аватара пользователя
Iska

Re: CMD/BAT - Батник для запуска chkdsk по первым числам месяца

Сообщение Iska »

Georgio и Iska, спасибо! Отрабатывают оба батника.



Проверил через GPO в домене на клиенте Win 7.



Только в первом варианте убрал пробел между «y| chkdsk», и добавил shutdown.exe -r -t 10 как во втором варианте.




Цитата Iska:



Вообще-то для этого предназначено «chkntfs.exe /c …» (и «fsutil.exe dirty set …», если так уж хочется принудительной проверки): Chkdsk.
CMD/BAT - Батник для запуска chkdsk по первым числам месяца




Вы считает, что не совсем правильно выполнять проверку диска chkdsk?



Тут только возник один неприятный момент: происходит циклическая перезагрузка-проверка.



А можно ли, как нибудь приделать, чтобы проверка выполнялась только один раз в сутки?



А то даже если отказаться от команды «shutdown.exe -r -t 10», то все равно будет каждый раз при перезагрузке, в течении дня отрабатываться команда на проверку.
Аватара пользователя
PowerZ

Re: CMD/BAT - Батник для запуска chkdsk по первым числам месяца

Сообщение PowerZ »

Цитата PowerZ:



Тут только возник один неприятный момент: происходит циклическая перезагрузка-проверка.



А то даже если отказаться от команды «shutdown.exe -r -t 10», то все равно будет каждый раз при перезагрузке, в течении дня отрабатываться команда на проверку.
CMD/BAT - Батник для запуска chkdsk по первым числам месяца





Цитата PowerZ:



Вы считает, что не совсем правильно выполнять проверку диска chkdsk?
CMD/BAT - Батник для запуска chkdsk по первым числам месяца




Вот поэтому я и привёл ссылку, чем можно заменить .



«Приделать»-то, конечно, всё можно, если вертеть в руках достаточно долго, но мне, в принципе, вовсе непонятен смысл Вашего желания назначать
периодическую проверку системного раздела при загрузке системы в рамках групповой политики. Операционные системы на базе NT, как правило, вполне справляются сами с отслеживанием ситуаций, требующих проверки разделов на наличие ошибок (в отличие от старых ОС).
Аватара пользователя
Iska

Re: CMD/BAT - Батник для запуска chkdsk по первым числам месяца

Сообщение Iska »

Цитата Iska:



«Приделать»-то, конечно, всё можно, если вертеть в руках достаточно долго, но мне, в принципе, вовсе непонятен смысл Вашего желания назначать периодическую проверку системного раздела при загрузке системы в рамках групповой политики. Операционные системы на базе NT, как правило, вполне справляются сами с отслеживанием ситуаций, требующих проверки разделов на наличие ошибок (в отличие от старых ОС).
CMD/BAT - Батник для запуска chkdsk по первым числам месяца




Суть решения назначить проверку диска принудительно через групповые политики 1-раз в месяц такова, что когда начинаешь выполнять именно принудительно такую проверку, то примерно у 5-10 машин в сети (из 200), есть ошибки. Хотя да, согласен, что NT должны сами автоматом исправлять ошибки.

Парк машин 50/50 = XP/7 (не считая серверную часть). Ошибки возникают как на XP, так и на 7. Особенно статистика показывает, что больше возникает ошибок на машинах, где весь день сёрфят в интернете.

Сейчас на данный момент задача запуска один раз в месяц, - решается с помощью корпоративного касперского, через задачи (запихнул туда батник). Почему смотрю в сторону запуска через GPO? Потому что антивирус не на всех машинах есть.

Попробую изучить альтернативу chkntfs.exe
Аватара пользователя
PowerZ

Re: CMD/BAT - Батник для запуска chkdsk по первым числам месяца

Сообщение PowerZ »

Пока сделал так:



Код:

Код: Выделить всё

@echo off
forfiles /p %systemdrive% /m chkdsk.log /d -1 /c "cmd /c del /q /f @file"
if not exist "%systemdrive%\chkdsk.log" (
for /f "delims=./" %%i in ("%date%") do (
 for /f "tokens=* delims=0 " %%j in ("%%i") do (
  if %%j==1 (
   echo y|chkdsk %systemdrive% /f /x > %systemdrive%\chkdsk.log
   shutdown.exe -r -t 10
   )
  )
 )
)
exit /b

Со вторым батником не заработало.

Подскажите, как заменить forfiles удаление лога, на альтернативу, т.к. forfiles – нет в XP?
Аватара пользователя
Iska

Re: CMD/BAT - Батник для запуска chkdsk по первым числам месяца

Сообщение Iska »

Взять forfiles конечно с Resource Kit'ов можно, но надо же распространить на все компы с XP в сети, тут уже другая заморочка. Хочется, чтобы из коробки было.

А если пойти другим путем, - как инвертировать батник, чтобы выполнялась команда "del файл" – всегда, кроме первого числа?
Аватара пользователя
PowerZ

Re: CMD/BAT - Батник для запуска chkdsk по первым числам месяца

Сообщение PowerZ »

Цитата PowerZ:



но надо же распространить на все компы с XP в сети
CMD/BAT - Батник для запуска chkdsk по первым числам месяца




я в логон скрипте копирую частоиспользуемые, но некоробочные и\или самописные утилиты с сервера в %temp% рабочей станции. Оттуда и вызываю.





Код:

Код: Выделить всё

if not exist %temp%\myutil.exe  copy \\server\share\myutil.exe %temp%\

Кстати..а что будет со станцией, которую, ну так вышло... никогда не включают 1-го числа?))
Ответить

Вернуться в «Скриптовые языки администрирования Windows»