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

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

arrowhead101 21-01-2014 11:54 2293282

BATник с запуском CHKDSK
 
Здравствуйте, необходима помощь.

Помоги написать bat который, будет делать в текстовом файле отметки о включении и выключении компьютера. В случае если предыдущий сеанс работы закончился аварийно - запускать CHKDSK.

Как сделать записать времени включения знаю, вот с выключением сложность, а про аварийное завершение и запуск CHKDSK вообще беда.
Желательно на Win 7.

Заранее благодарю.

Iska 21-01-2014 16:08 2293440

Цитата:

Цитата arrowhead101
Как сделать записать времени включения знаю, вот с выключением сложность »

Ровно так же, как и со включением — редактор групповой политики:
Код:

Политика "Локальный компьютер"       
  Конфигурация компьютера       
      Конфигурация программ       
      Конфигурация Windows       
        Сценарии (запуск/завершение)

параметры «Автозагрузка»/«Завершение работы».

Цитата:

Цитата arrowhead101
а про аварийное завершение и запуск CHKDSK вообще беда. »

Например, пакетный файл «на включение» должен проверять существование некоего заранее определённого файла по определённому пути. Если последний существует — пакетный файл выполняет chkdsk, если не существует — создаёт этот файл. Пакетный файл «на выключение» удаляет этот файл.

Таким образом, при корректном выключении определённый файл будет удалён и в момент следующего включения будет отсутствовать. В противном случае файл не будет удалён, и при следующем включении его существование обнаружит пакетный файл «на включение» и выполнит chkdsk.

arrowhead101 21-01-2014 17:33 2293486

Тоесть, делаем batник
startlog.bat
Код:

@echo
Start Win %date% %time% >>C:\log.txt

и finishlog.bat
Код:

@echo  Finish Win %date% %time% >>C:\log.txt
Start file>C:\start.txt

Как дописать к первому чтобы он проверял на наличие файла и запускал CHKDSK?

Iska 21-01-2014 18:36 2293517

Цитата:

Цитата arrowhead101
Тоесть, делаем batник
startlog.bat »

On.cmd:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

>>"c:\log.txt" echo %date% %time%

if exist "c:\ForChkDsk.log" (
        chkdsk.exe c: /f
) else (
        >nul copy /y nul "c:\ForChkDsk.log"
)

endlocal
exit /b 0

и добавляем его в «Автозагрузка» в:
Код:

Политика "Локальный компьютер"       
  Конфигурация компьютера       
      Конфигурация программ       
      Конфигурация Windows       
        Сценарии (запуск/завершение)

Цитата:

Цитата arrowhead101
и finishlog.bat »

Off.cmd:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

>>"c:\log.txt" echo %date% %time%

if exist "c:\ForChkDsk.log" (
        del /f /q "c:\ForChkDsk.log"
)

endlocal
exit /b 0

и добавляем его в «Завершение работы» туда же, в:
Код:

Политика "Локальный компьютер"       
  Конфигурация компьютера       
      Конфигурация программ       
      Конфигурация Windows       
        Сценарии (запуск/завершение)

В реальности же никакого смысла в подобных костылях для chkdsk нет:
читать дальше »
  • механизм определения и управления уже наличествует в ОС;
  • проверка %SystemDrive% в момент, когда уже загружен интерфейс, бессмысленна; мы получим сообщение об открытых дескрипторах на томе и предложение, наподобие:
    Цитата:

    Невозможно выполнить команду CHKDSK, так как указанный том используется другим процессом. Следует ли выполнить проверку этого тома при следующей перезагрузке системы? [Y(да)/N(нет)]

arrowhead101 21-01-2014 21:21 2293676

Спасибо большое, дело не в костылях, это задание для учебы)

Iska 21-01-2014 23:50 2293764

arrowhead101, я примерно так и представлял. Тогда можете и «В реальности же никакого смысла…» использовать комментарием к нему.

Iska 22-01-2014 01:28 2293820

Подумалось, что, по-хорошему, надо различать в логе события загрузки и завершения работы. Измените «>>"c:\log.txt" echo %date% %time%», скажем, на:
Код:

>>"c:\log.txt" echo %date% %time% Start
и:
Код:

>>"c:\log.txt" echo %date% %time% Stop
для «On.cmd» и «Off.cmd» соответственно.


Время: 05:46.

Время: 05:46.
© OSzone.net 2001-