arrowhead101 |
21-01-2014 11:54 2293282 |
BATник с запуском CHKDSK
Здравствуйте, необходима помощь.
Помоги написать bat который, будет делать в текстовом файле отметки о включении и выключении компьютера. В случае если предыдущий сеанс работы закончился аварийно - запускать CHKDSK.
Как сделать записать времени включения знаю, вот с выключением сложность, а про аварийное завершение и запуск CHKDSK вообще беда.
Желательно на Win 7.
Заранее благодарю.
|
Цитата:
Цитата 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?
|
Цитата:
Цитата 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
Сценарии (запуск/завершение)
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 |
Спасибо большое, дело не в костылях, это задание для учебы)
|
arrowhead101, я примерно так и представлял. Тогда можете и «В реальности же никакого смысла…» использовать комментарием к нему.
|
Подумалось, что, по-хорошему, надо различать в логе события загрузки и завершения работы. Измените «>>"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.
© OSzone.net 2001-