Любой язык - BAT файл каждые 20 секунд читающий TXT файл.

Ответить
 • Просмотры: 1
Аватара пользователя
A555555

Любой язык - BAT файл каждые 20 секунд читающий TXT файл.

Сообщение A555555 »

Здравствуйте.

Цель: борьба с парковками HDD подключенных через USB хаб.





BAT файл (закинуть в Автозагрузку), чтоб он в корне дисков F, G, H, I, J, K каждые 20 секунд производил чтение TXT файла пустышки, ради того чтоб происходило действие на диске и он не парковался. В случае, если указанные диски в данный момент не подключены, не выдавал ошибку о том, что невозможно прочитать.



Помогите пожалуйста.
Аватара пользователя
DJ Mogarych

Re: Любой язык - BAT файл каждые 20 секунд читающий TXT файл.

Сообщение DJ Mogarych »

Можно сначала попробовать
отключить энергосбережение в свойствах диска
.



Если не поможет, то есть программка
KeepAliveHD
, которая занимается вот этой писаниной файликов.

Есть также
NoSleepHD и прочие варианты
.
Аватара пользователя
megaloman

Re: Любой язык - BAT файл каждые 20 секунд читающий TXT файл.

Сообщение megaloman »

Код:

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

@echo off
:: Зададим задержку в секундах (в минутах= 60 сек. * кол-во минут)
set /a "pause=20*1"
:: Бесконечный цикл
:LOOP
for %%i in (F G H I J K) do (
rem type "%%i:\empty.file" >nul 2>&1
echo."%%i:\empty.file"
)
call :TIMEOUT1
goto :LOOP
goto :EOF
:TIMEOUT1
timeout /t %pause% /nobreak >nul 2>&1
Аватара пользователя
megaloman

Re: Любой язык - BAT файл каждые 20 секунд читающий TXT файл.

Сообщение megaloman »

NickM, ИМХО, чтобы работало, rem надо убрать. И можно обойтись без пустышки

Код:

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

@Echo Off &Cls
	Set /A TimeSec=20
	:Begin
		FOR %%d In (F, G, H, I, J, K) DO >nul 2>&1 Dir /B /A:D  %%d:\
		>nul Timeout /T %TimeSec%
	GoTo :Begin
Exit /B




ИМХО, лучше сделать vbs-скрипт. Не будет постоянно висеть окно CMD. Убить скрипт можно в диспетчере задач (процесс wscript)

[spoiler]Код:
[/spoiler]

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

Const TimeSec = 20
Dim x, i, D: D = Array("F", "G", "H", "I", "J", "K")
With CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    Do
        For Each i In D
            x = "": x = .GetFolder(i & ":\").Size
            ' MsgBox x & vbCr & i
        Next
        WSctipt.Sleep TimeSec * 1000
    Loop
    On Error GoTo 0
End With
Ответить

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