1

Даже если функция энергосбережения в Windows настроена так, чтобы никогда не выключать мой жесткий диск, мои внешние жесткие диски USB будут автоматически отключаться после некоторого периода бездействия. Проблема в том, что они будут вращаться в случайном порядке во время простоя компьютера или во время просмотра фильма / прослушивания музыки; это действительно очень раздражает (не только из-за шума, который он издает, но и потому, что он без нужды напрягает диск каждый раз, когда делает это, что более десятка раз в день, и это меня беспокоит). Я натолкнулся на старую бесплатную утилиту, которую можно использовать для очень эффективного решения этой проблемы с дисками SATA / eSATA. Это называется revoSleep. В документации этой утилиты рассказывается, как перевести диск в автономный режим, раскрутить его, а затем отключить драйвер устройства.

Это вдохновило меня на поиск аналогичного решения для USB-накопителей, но до сих пор я не смог найти программную утилиту, которая бы работала без проблем. Используя diskpart, я могу отключить USB-диск. Затем, используя бесплатную утилиту HDDScan для Windows (похожую на «hdparm»), я могу раскрутить диск и даже сделать это из пакетного файла. Ницца.

Последний шаг - отключение драйвера устройства на диске из одного пакетного файла вместо использования диспетчера устройств. Используя другую бесплатную утилиту под названием DevCon, я быстро смог определить правильный драйвер устройства. Оказывается, старая версия DevCon (с 2003 года) не может отключать драйверы устройств в Windows 7 или 8. В итоге я скачал Driver Developmet Kit (DDK) 7.1.0 из центра загрузки Microsoft, чтобы получить работающую версию. Как только это было решено, наконец, я смог отключить драйвер устройства моего жесткого диска USB. Теперь вот мой вопрос. Ват лучший, самый надежный способ автоматизировать эти шаги в пакетном файле (или в сценарии WSH или в любом другом месте), чтобы пакетный файл / сценарий случайно не выбрал неправильный диск для какой-либо из команд, которые он будет выполнять?

Кстати, я наткнулся на этот пост, но в примере кода используются только первые 11 символов метки тома, чтобы найти номер раздела. Вместо этого я хочу, чтобы он использовал (если возможно) уникальный серийный номер жесткого диска, чтобы найти номер диска, чтобы иметь возможность перевести правильный диск в автономный режим.

2 ответа2

0

Мне удалось написать сценарий PowerShell 3.0, чтобы отключить внешний USB-жесткий диск с помощью Diskpart, затем развернуть его с помощью HDDScan для Windows и, наконец, отключить драйвер устройства с помощью DevCon. Однако через несколько минут жесткий диск снова начинает вращаться и сразу после этого снова вращается. Я убедился, что этот симптом появляется только один раз после запуска моего сценария. Я опубликую новый вопрос по этой проблеме.

0

Это может помочь.

Если вам известен серийный номер жесткого диска, вы можете использовать пакетный скрипт ниже, чтобы получить букву диска. Оттуда вы можете использовать букву диска для определения тома или номера диска с помощью diskpart.

@echo off
setlocal EnableDelayedExpansion

set "xDrive="
rem Loop through all of the drives to find the external HDD
for %%D in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    for /f "tokens=5" %%S in ('vol %%~D:') do set "xSerial=%%S"
    if "%xSerial%"=="ABCD-1234" (
        set "xDrive=%%~D:"
    )
)

echo Drive Found = %xDrive%

endlocal
pause

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .