スクショのフォルダで作成日時が最新のファイルパスを得ればいいだけ・・・だよね
TL;DR
code $profile
してpowershellの設定ファイルに以下を追加
function scr(){
$screenshotPath = @(
"$env:USERPROFILE\Pictures\Screenshots",
"$env:USERPROFILE\OneDrive\画像\Screenshots"
) | Where-Object { Test-Path $_ } | Select-Object -First 1
Get-ChildItem $screenshotPath -File | Sort LastWriteTime -Desc | Select -First 1 -Expand FullName
}
wsl側で.bashrc
とかに以下を追加
alias scr='wslpath "$(pwsh.exe -Command scr)" | iconv -f CP932 -t UTF-8 | sed "s/ /\\\\ /g"'
これでscr
と入力すれば最新スクショのパスを得られる
(OneDrive使ってない場合は動かないかも?)
かんきょう
環境はこんな感じだけどそれ以外でもたぶん動く:
- Windows 11
- PowerShell: pwsh.exe 7.5.0
- wsl 2
- ubuntu 24.04
- bash 5.2.21
pwsh.exeインストールしてない場合はしたほうがいい
winget install -eh Microsoft.PowerShell
スクショが保存されるフォルダ
OneDrive使ってるかどうかでこのどっちかのフォルダにスクショが保存されるはず
(OneDrive使ってない方は合ってるか知らんけど)
- OneDrive有り:
C:\Users\<<ユーザー名>>\OneDrive\画像\Screenshots
- OneDrive無し:
C:\Users\<<ユーザー名>>\Pictures\Screenshots
このユーザー名までのパスは$env:USERPROFILE
で得ることができる
powershell
上のフォルダがあるかないかで分岐して、最新のファイルパスを表示する関数を作る
function scr(){
$screenshotPath = @(
"$env:USERPROFILE\Pictures\Screenshots",
"$env:USERPROFILE\OneDrive\画像\Screenshots"
) | Where-Object { Test-Path $_ } | Select-Object -First 1
Get-ChildItem $screenshotPath -File | Sort LastWriteTime -Desc | Select -First 1 -Expand FullName
}
これをpowershellの設定ファイルに書いておけばscr
と打つだけでスクショのパスを得られる
設定ファイルはcode $profile
すればすぐ編集できる
wsl
上の設定をしておいたならwsl側ではpwsh.exe -Command 'scr'
すると同じことを実行できる
それをwslのパスに変換するにはwslpathを使うが、日本語が文字化けするのでiconvする
そしてついでにスペースをエスケープする
これを.bashrc
に書き込んでおく
alias scr='wslpath "$(pwsh.exe -Command scr)" | iconv -f CP932 -t UTF-8 | sed "s/ /\\\\ /g"'
単純にls
してもいい
ユーザー名得るのはpwsh.exe -Command $env:USERNAME
でできるけど、それだとpwsh経由して意味ないので絶対パスを直接書き込んでる。他良い方法あれば教えてほしい
ls -td /mnt/c/<<USERNAME>>/inarb/OneDrive/画像/Screenshots/* | head -n 1
使ってみる
powershell
PowerShell 7.5.0
PS>scr
C:\Users\<<ユーザー名>>\OneDrive\画像\Screenshots\スクリーンショット 2025-03-17 004458.png
wsl
$ scr
/mnt/c/Users/<<ユーザー名>>/OneDrive/画像/Screenshots/スクリーンショット\ 2025-03-17\ 004458.png
で、何に使いたかったか
っていうと、ollamaにコピペした画像をすぐ渡したかった
win + shift + sして以下の画像をスクショした
gemma3がけっこうちゃんと喋れるので文字おこしにも使えるか試したかった
自分の環境: CPU Ryzen 3700X, メモリ64GB(DDR4-3200), RTX4070TiSUPER(VRAM16GB)
gemma3:4b
だとすぐ終わるかわりに変なこと言ってる、けど文字おこし頼んだらわりとちゃんと読んでくれる
$ ollama run gemma3:4b "これ何の画像? $(scr)"
Added image '/mnt/c/Users/<<ユーザー名>>/OneDrive/画像/Screenshots/スクリーンショット 2025-03-17 020035.png'
この画像は、漫画「 skaters 」の表紙です。
* **タイトル:** スケートリズム (1)
* **作者:** 氷川凜太郎
* **ジャンル:** アニメ、受賞作
gemma3:27b
だとけっこう時間かかるしPCめっちゃ重くなるけど一応ちゃんと説明してくれる
urlはぜんぜん違う、ってか画像を渡しただけだからurlまで知ってたらこわ
$ ollama run gemma3:27b "これ何の画像? $(scr)"
Added image '/mnt/c/Users/<<ユーザー名>>/OneDrive/画像/Screenshots/スクリーンショット 2025-03-17 020035.png'
これは、漫画「メダリスト」の第1巻の表紙画像です。
作者はつるまいかださんで、フィギュアスケートをテーマにした作品です。
詳細はこちらで確認できます。
[https://www.kadokawa.co.jp/product/322303100216/](https://www.kadokawa.co.jp/product/322303100216/)