В данной статье показаны действия, с помощью которых можно извлечь изображения Windows: интересное (Windows: spotlight) в операционной системе Windows 10.
Функция Windows: интересное (Windows: spotlight) предназначена для автоматической смены изображений на экране блокировки. Фоновые изображения находятся на серверах Microsoft, и загружаются они на компьютер когда функция Windows: интересное (Windows: spotlight) включена в параметрах системы.
Далее в статье представлены два скрипта, с помощью которых можно извлечь изображения Windows: spotlight всего в пару кликов мыши.
По умолчанию изображения сохраняются в папку Assetst в профиле пользователя по следующему пути:
%USERPROFILE%\\AppData\\Local\\Packages\\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\\LocalState\\Assets
Скрипт №1 для извлечения изображений Windows: интересное (Windows: spotlight)
Данный скрипт создаёт папку "Spotlight Images" на рабочем столе и извлекает в неё все изображения Windows: spotlight.
Скачайте архив со скриптом spotlight_images.zip.
Распакуйте архив в любом месте и запустите двойным кликом файл spotlight_images.vbs
Через несколько секунд на рабочем столе появится папка Spotlight Images, а в ней изображения Windows: spotlight из профиля пользователя.
Скрипт автоматически извлекает и даёт расширение *.jpg всем файлам из каталога Assets, некоторые из них и есть изображения «Windows: интересное» (Windows spotlight), которые загружаются с серверов майкрософт, но большинство из них не является фоновыми изображениями экрана блокировки.
Ниже представлен листинг файла сценария spotlight_images.vbs
Const ssfDESKTOPDIRECTORY = &h10
Dim FolderName
FolderName = "Spotlight Images"
Set oShell = CreateObject("Shell.Application")
strDesktop = oShell.NameSpace(ssfDESKTOPDIRECTORY).Self.Path
Dim oFSO, strAppData, objShell
Set objShell = CreateObject("WScript.Shell")Set oFSO = CreateObject("Scripting.FileSystemObject")
objShell.CurrentDirectory = oFSO.GetParentFolderName(WScript.ScriptFullName)
strAppData=objShell.ExpandEnvironmentStrings("%LOCALAPPDATA%\\Packages\\
Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\\LocalState\\Assets")
oFSO.CopyFolder strAppData , strDesktop & "\\" & FolderName, True
Set objShell = Nothing
Set oFSO = Nothing
\' Extension -----------------------
sVBSPath = strDesktop & "\\" & FolderNamewith createobject("wscript.shell")
.currentdirectory = sVBSPath
.run "%comspec% /c ren *. *.jpg", 0, true
end with
Set objShell = CreateObject("Wscript.Shell")
strPath = "explorer.exe /e," & strDesktop & "\\" & FolderName
objShell.Run strPath
Скрипт №2 для извлечения изображений Windows: интересное (Windows: spotlight)
Данный скрипт предложил пользователь VBS Expert. Скрипт также позволяет извлечь изображения «Windows: spotlight».
При использовании данного скрипта можно согласиться на то, что все файлы изображений скопируются на рабочий стол, или также можно перетащить на файл скрипта "SavePics.vbs" любую папку в которую вы пожелаете скопировать изображения.
При повторном запуске скрипта, существующие файлы изображений будут перезаписаны.
Скачайте архив со скриптом save_windows_spotlight.zip.
save_windows_spotlight.zip.
Извлеките файл скрипта из архива, например на рабочий стол, перетащите на файл скрипта "SavePics.vbs" любую папку в которую вы пожелаете скопировать изображения.
Ниже представлен листинг файла сценария save_windows_spotlight.vbs
\'save_windows_spotlight.vbs
\'Copyright (c)Dim User, Path, Path2, msgStr
User = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%")
Path = User & "\\AppData\\Local\\Packages\\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\\LocalState\\Assets"With WScript.Arguments
If .Count <> 0 Then
Path2 = .Item(0)
msgStr = "Все содержимое будет скопировано в " & Path2
Else
Path2 = User & "\\Desktop"
msgStr = "Все содержимое будет скопировано на рабочий стол."
End If
End WithWith CreateObject("Scripting.FileSystemObject")
If .FolderExists(Path) Then
If .GetFolder(Path).Files.Count <> 0 Then
If .FolderExists(Path2) Then
If MsgBox(msgStr & VbCrLf & "Продолжить?", 4 + 32, "Ваш выбор") = VbYes Then
For Each f In .GetFolder(path).Files
.CopyFile Path & "\\" & f.Name, Path2 & "\\" & f.Name & ".jpg"
Next
End If
Else
MsgBox "Папки " & Path2 & " не существует.", 16, "Ошибка"
End If
Else
MsgBox "По каким-то причинам папка пуста.", 16, "Ошибка"
End If
Else
MsgBox "Заданной папки не существует.", 16, "Ошибка"
End If
End With
просто супер . классный сайт . теперь это мой сайт
"Скрипт автоматически извлекает и даёт расширение jpg всем файлам из каталога Assets, и некоторые из них не являются изображениями. "
Еще как являются т.к. SHA-1 совпадает с изображениями.
Ваш или чей-то код содержит грубые ошибки, вместо того чтобы использовать цикл на перебор коллекции (For Each), используется тупое копирование папки(oFSO.CopyFolder strAppData , strDesktop & "\\" & FolderName, True) и добавление расширения для файлов вызвав командную строку(.run "%comspec% /c ren *. *.jpg", 0, true),
поэтому при повторном запуске "spotlight_images.vbs" копировании папки создаются дубликаты файлов без расширения(из-за того, что в командной строке ren сообщает что "Файл с таким именем уже существует или не найден.") в то время рациональнее было перебирать коллекцию и в самом цикле присваивать расширение при копировании каждого файла в новое место и без дубликатов(т.к. каждый файл из коллекции если он существует будет перезаписан).
Вообщем, код низкого качества.
P.S. Тот кто писал этот код, его знания очень поверхностны, или это школота :)))
Код не мой, а с одного бурж сайта.
Вашу критику принял 🙂
Предложите свой вариант кода!
' SavePics.vbs
' Copyright (c) 2018 Fyan <fyanur_@live.ru>
Dim User, Path, Path2, msgStr
User = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPRO
FILE%")
Path = User & "\\AppData\\Local\\Packages\\Microsoft.Windows.ContentDeliveryManager_cw5n
1h2txyewy\\LocalState\\Assets"
With WScript.Arguments
If .Count <> 0 Then
Path2 = .Item(0)
msgStr = "Все содержимое будет скопировано в " & Path2
Else
Path2 = User & "\\Desktop"
msgStr = "Все содержимое будет скопировано на рабочий стол."
End If
End With
With CreateObject("Scripting.FileSystemObject")
If .FolderExists(Path) Then
If .GetFolder(Path).Files.Count <> 0 Then
If .FolderExists(Path2) Then
If MsgBox(msgStr & VbCrLf & "Продолжить?", 4 + 32, "Ваш выбор") = VbYes Then
For Each f In .GetFolder(path).Files
.CopyFile Path & "\\" & f.Name, Path2 & "\\" & f.Name & ".jpg"
Next
End If
Else
MsgBox "Папки " & Path2 & " не существует.", 16, "Ошибка"
End If
Else
MsgBox "По каким-то причинам папка пуста.", 16, "Ошибка"
End If
Else
MsgBox "Заданной папки не существует.", 16, "Ошибка"
End If
End With
Логика кода такая: Пользователь может 2х кликом просто согласиться на то, что все скопируется на рабочий стол, или перетащить на SavePics.vbs любую папку в которую он пожелает скопировать.
При повторном запуске как Я и говорил уже существующие файлы будут перезаписаны(полезно если испорчены).
Спасибо за код! в ближайшее время отредактирую статью.
Немного не в тему.
После обновления Windows 11 KB5014019 (build 22000.708) появилась новая функция в персонализации фона рабочего стола — Windows Spotlight на рабочем столе.
Где на этот раз прячут загружённые обои?