1

Представьте, что есть файл A:\Example\file.txt

Если в этом файле обнаружено какое-либо изменение, оно автоматически заменяется файлом B:\example\file.txt , и при этом не появляется диалоговое окно замены файла и не появляется приглашение UAC каждый раз, когда все происходит в фоновом режиме. Если никаких изменений не обнаружено, ничего не делается, скрипт продолжает проверять изменения в фоновом режиме, надеясь, что потребляет очень мало системных ресурсов.

Я мог бы сделать:

Copy-Item "A:\Example\file.txt" "B:\Example\file.txt" -Force

Но это не повторяется и не выполняется в фоновом режиме все время, и я не уверен, может ли он автоматически пропускать запросы UAC или диалоги замены файлов или нет.

1 ответ1

1

В основном вам понадобится запланированное задание, которое выполняется с короткими интервалами, скажем, каждые 5 минут, чтобы обнаружить изменение. Одна мысль, которая приходит на ум, заключается в том, что вы можете хэшировать файл, сохранять значение, а затем снова выполнять хэширование файла запланированной задачей и сравнивать хеш с сохраненным значением. Вы, кажется, знакомы с Powershell. Verion 4.0 и выше содержит командлет Get-FileHash, который вы можете использовать. Оттуда ваш скрипт скопирует файл, если хэши разные.

В ответ на комментарий вот пример кода. StoredHash.txt представляет собой текстовый файл, который содержит хэш рассматриваемого файла.

$A = Get-Content "StoredHash.txt"
$B = Get-FileHash  -Algorithm MD5 -Path "A:\Example\file.txt"
If (-Not $A = $B)   
  {
  Copy-Item "A:\Example\file.txt" -Destination "B:\Example\file.txt"
  $B | Out-File "StoredHash.txt"   
  }

В последней строке хранится новый хэш, чтобы вы могли искать последующее изменение. Я не тестировал этот код, поэтому он может содержать ошибки. Но этого должно быть достаточно, чтобы вы начали.

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