junkerstock
 Windowsスポットライト保存バッチ

適当にフォルダを設ける(例はgazou)

イメージマジックの実行ファイルをダウンロードする。ImageMagick-7.1.2-12-portable-Q16-x64.7z をおとす。
magick.exeのみを取り出し、フォルダgazou の下に binフォルダを作って入れる。

テキストファイルをそのフォルダで作る。cnt.txt という名前にする。ひらいて 0と入れて保存。

spot取得.bat というバッチを作ってそのフォルダに入れる。以下はその内容。 ANSIで保存する。


spot取得.bat

@echo off
setlocal enabledelayedexpansion

echo スポットライト背景画像取得(保存先フォルダ分け版)
echo.

:: --- 設定 ---
set "base_dir=%~dp0"
set "base_dir=%base_dir:~0,-1%"
set "aa=%base_dir%\temp"
set "bb=%base_dir%"
set "cc=%base_dir%\wallpaper"
set "im_exe=%base_dir%\bin\magick.exe"
set "assets=%LOCALAPPDATA%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets"

:: フォルダ作成
if not exist "%aa%" mkdir "%aa%"
if not exist "%cc%" mkdir "%cc%"
if not exist "%bb%\cnt.txt" echo 0 > "%bb%\cnt.txt"

:: 1. アセットから200KB以上をtempへコピー
echo ファイルを収集中...
for %%F in ("%assets%\*") do (
if %%~zF GEQ 200000 copy "%%F" "%aa%" >nul
)

:: 2. 一旦作業用連番にリネーム
cd /d "%aa%"
set num=1
for /F "delims=" %%A in ('dir /b *.') do (
ren "%%A" "!num!.jpg"
set /a num+=1
)

:: 3. 縦横比判定(縦長を削除)
echo 画像の向きを判定中...
for %%f in (*.jpg) do (
set "HE="
set "WI="

for /f "usebackq delims=" %%i in (`""%im_exe%" identify -format "%%h" "%%f""`) do set HE=%%i
for /f "usebackq delims=" %%i in (`""%im_exe%" identify -format "%%w" "%%f""`) do set WI=%%i

if defined HE if defined WI (
if !HE! GEQ !WI! (
del "%%f"
)
)
)

:: ■■■ ImageMagick実行後に文字コードがずれるのを防ぐため、Shift-JIS(932)に戻す ■■■
chcp 932 >nul

:: 4. 重複排除(wallpaperフォルダ内のファイルと比較)
echo 重複(サイズ一致)を確認中...
for %%B in (*.jpg) do (
set "target_size=%%~zB"
set "duplicate=false"
pushd "%cc%"
for %%A in (*.jpg) do (
if %%~zA == !target_size! set "duplicate=true"
)
popd
if "!duplicate!"=="true" del "%%B"
)

:: 5. ファイルの有無確認
set fff=NONE
for %%F in (*.jpg) do set fff=yes
if "%fff%"=="NONE" (
echo.
echo 取得できる新しい画像はありませんでした。
goto EENN
)

:: 6. 管理番号を読み込んで wallpaper へ移動
echo 保存フォルダへ移動中...
for /f "usebackq tokens=*" %%A in ("%bb%\cnt.txt") do set /a N=%%A

set /a num=%N% + 1
for /F "delims=" %%A in ('dir /b *.jpg') do (
move "%%A" "%cc%\!num!.jpg" >nul
set /a num+=1
)

:: カウント更新
set /a last_num=%num% - 1
echo !last_num!> "%bb%\cnt.txt"

echo.
echo 完了しました!
echo [ %cc% ]
echo を確認してください。
pause
exit

:EENN
echo.
echo 新しい画像が見つからなかったため、終了します。
pause
exit