1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windowsの最新スクショのパスをPowershellとwslで得る

Last updated at Posted at 2025-03-16

スクショのフォルダで作成日時が最新のファイルパスを得ればいいだけ・・・だよね

TL;DR

code $profileしてpowershellの設定ファイルに以下を追加

Microsoft.PowerShell_profile.ps1
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とかに以下を追加

.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に書き込んでおく

.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して以下の画像をスクショした

『メダリスト(1)』(つるまいかだ)|講談社コミックプラス

image.png

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/)

参考: Ollama で Gemma 3 による画像認識 #Python - Qiita

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?