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

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

A555555 26-05-2025 17:46 3038098

BAT файл каждые 20 секунд читающий TXT файл.
 
Здравствуйте.
Цель: борьба с парковками HDD подключенных через USB хаб.


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

Помогите пожалуйста.

DJ Mogarych 26-05-2025 18:23 3038099

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

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

NickM 26-05-2025 18:55 3038100

Код:

@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 29-05-2025 15:07 3038151

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)
Код:

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



Время: 00:03.

Время: 00:03.
© OSzone.net 2001-