Google
WWW を検索 tips.asablo.jp 内を検索
 このブログサイト(tips blog)の中だけを検索できます。
 アサブロへの設定方法は、こちらをクリック

Windows 10 スポットライト写真の自動保存プログラム2017/01/03 11:32

 Windows 10 のスポットライト機能が有効だとロック画面に色々な写真が表示されます。

 中には、これは一体どこ? 是非行ってみたい、と思うような素晴らしい景色もあります。

 幸いなことに、Google 画像検索を使えば、その場所がどこか探せる場合があります。

https://images.google.co.jp/

 上記ページに画像ファイルをドラッグ&ドロップしてみましょう。



 だがしかし、問題なのはその画像ファイルを取り出す方法。

 以下の記事では、画像ファイルのあるフォルダーを教えてくれています。
http://news.mynavi.jp/column/win10tips/036/

 しかし、この場所からその都度ファイルをコピーして名前を変更するのは面倒です。

 そこで、VBScriptでスクリプトを書いてみました。



'' === Start of Script ===

'' スポットライトの画像フォルダーパス(AppData\Local以下)
sAssetsSubPath = "Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets"

'' 指定したサイズ(KB)以上のファイルをコピーする
iThreshold = 100

'' 画像ファイルをコピーするデスクトップ上のフォルダー名
sSLFolderName = "Win10Spotlight"


set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
set oShell = CreateObject("Shell.Application")


'' 画像コピー先フォルダー作成
Private Const ssfDESKTOP = 0
sDesktopPath = oShell.Namespace(ssfDESKTOP).Self.Path
sSLFolderPath = oFSO.BuildPath(sDesktopPath, sSLFolderName)
if not oFSO.FolderExists(sSLFolderPath) then
oFSO.CreateFolder(sSLFolderPath)
end if


'' Assetsフォルダーオブジェクト取得
Private Const ssfLOCALAPPDATA = 28
sAppDataPath = oShell.Namespace(ssfLOCALAPPDATA).Self.Path
sAssetsPath = oFSO.BuildPath(sAppDataPath, sAssetsSubPath)

if not oFSO.FolderExists(sAssetsPath) then
msgbox sAssetsPath & " が存在しません", vbCritical, "エラーが発生しました"
WScript.Quit
end if

set oFolder = oFso.getFolder(sAssetsPath)


'' ファイルコピー処理
for each oFile in oFolder.files
if oFile.Size > ( iThreshold * 1024 ) then
sAssetsFile = oFSO.BuildPath(sAssetsPath, oFile.name)

sJPEGFile = oFSO.BuildPath(sSLFolderPath, oFile.name & ".jpg")

if not oFSO.FileExists(sJPEGFile) then
oFSO.CopyFile sAssetsFile, sJPEGFile
end if
end if
next

'' == End of Script ===



 デスクトップに sSLFolderName で指定されたフォルダーを作成し、そこに iThreshold で指定されたサイズ以上のファイルをJPEG拡張子をつけてコピーするというものです。

 安全のため上書きコピーはしないようにしています。もし上書きされずに新しいファイルを取得できない場合には、sSLFolderNameで指定したフォルダーを削除して再実行すればOKです。



 上記スクリプトを実行するには次の手順通りにします。

1. デスクトップを右クリックして、「新規作成」から「テキストドキュメント」を選択します。
2. ファイル名を適当につけます。例えば、CopySpotlightsなど。
3. ファイルをダブルクリックして開きます。
4. 上記スクリプトの '' === Start of Script === から '' == End of Script === までをコピペして保存します。
5. ファイル名の .txt を .vbs に変更します。
もし.txt が表示されていない場合には、windows 10 拡張子 変更 などでググりましょう。
例えば以下のページに書いてあります。
http://win10labo.info/win10-exp/
6. ファイルをダブルクリックするとデスクトップに Win10Spotlight というフォルダーが作成され、画像ファイルがコピーされているはずです。



 スクリプト作成には以下のサイトを参考にさせていただきました。どれも使ったことがある命令なのですが、記憶力劣化で一つも自力で思い出すことはできませんでした。
( ̄^ ̄)

ファイル操作
http://www.atmarkit.co.jp/ait/articles/0510/13/news111.html

フォルダーに含まれるファイル操作
http://qiita.com/asterisk9101/items/a7310c0e4ec33352835f

特殊フォルダー
https://www.ka-net.org/blog/?p=3782

フォルダーの存在テストと作成
http://www.whitire.com/vbs/tips0078.html



 ちなみに、スクリプトを使わない方法が、以下のサイトに紹介されていました。
http://www.howtogeek.com/247643/how-to-save-windows-10s-lock-screen-spotlight-images-to-your-hard-drive/

 なるほど、ren *.* *.jpg で一括変換できたのか!!
( ̄□ ̄;)!!

 バッチで作ったほうが簡単で早かったらしい
(-_-;)

 というわけで、バッチファイルバージョンも作ってみました。



rem === Start of Batch file ===

echo off

set uAssetsPath=%USERPROFILE%\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets

if not exist %uAssetsPath% (
exit
)


set uSLPath=%USERPROFILE%\Desktop\Win10Spotlight

if not exist %uSLPath% (
mkdir %uSLPath%
)


set /a uSize=100*1024

for %%F in ( %uAssetsPath%\* ) do (
if %%~zF GEQ %uSize% if not exist "%uSLPath%\%%~nF.jpg" copy "%%F" "%uSLPath%\%%~nF.jpg"
)

rem === End of Batch file ===



 さすがにバッチで ren *.* *.jpg とするのは危険な香りがしたので、スクリプト同様に上書きせずにコピーすることにしました。

 バッチの実行方法もスクリプトと同様です。違いは 5. の手順で .txt を .bat に変更することです。

 結局、バッチはバッチで色々確認することが多くてそれなりに時間がかかりました。

 AppDataとDesktopの指定が本当にこれでいいのか未確認なので、使うならVBScriptバージョンをお勧めします。



 バッチ作成の参考サイト

存在テスト
http://piyopiyocs.blog115.fc2.com/blog-entry-881.html

ユーザープロファイルフォルダー
http://pentan.info/server/windows/cmd/userprofile.html

指定サイズ以上のファイルコピー
http://fpcu.on.coocan.jp/dosvcmd/bbs/log/copyxcopy/4-1643.html

四則演算
http://www.geocities.jp/clc6249/souko/batchfile/batchfile.html#s4

ファイル名のみの取得
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1279714392


 当たり前ですが、ご利用は自己責任でお願いいたします。データが消えたり、パソコンが起動しなくなっても当方は関知いたしません。
( ̄^ ̄)

 なんと、データ上はネスト部分が字下げされているのですが、表示すると先行するスペースがなくなるようです。まあ、短いプログラムなので良しとするかな。
( ̄^ ̄)



 サーバーから直接ダウンロードするアプリもあるらしい。
https://dekiru.net/article/14136/

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
スパム対策です。「BBB」と入力してください。なお、上記のメールアドレス、URLは不要です。

コメント:

トラックバック

Google
WWW を検索 tips.asablo.jp 内を検索
 このブログサイト(tips blog)の中だけを検索できます。
 アサブロへの設定方法は、こちらをクリック