Amazonで商品を見るセール会場へ

Windowsバッチ│フォルダ内の画像名を取得するバッチファイル

PNG画像名の一覧を取得するには、対象フォルダーを明示してファイル名を読み取ります。

まず画面かUTF-8のテキストへ出力し、必要なときにクリップボードへコピーできます。

目次

コマンドプロンプトで画像名を確認する

C:\Practice\画像 資料を実際のパスに置き換え、CMDで次の1行を実行します。

cd /d "C:\Practice\画像 資料" && dir /b /a-d /o:n "*.png"

cd /dはドライブも切り替え、&&は移動に成功した場合だけ一覧の取得へ進みます。

dirの/bは名前だけ、/a-dはファイルだけ、/o:nは名前順で、サブフォルダーは対象に含めません。

日本語を含む一覧をUTF-8で保存する

Windows練習用データとスクリプト(ZIP)

ZIPは空の練習フォルダーへ展開し、下の手順で指定するサブフォルダーを開いて使います。

Windows PowerShell 5.1用のPS1はUTF-8(BOM付き)で保存します。

BATのRemoteSigned指定は起動したプロセスだけに適用し、ユーザーやPC全体の実行ポリシーは変更しません。

ダウンロードしたPS1が署名エラーになる場合は内容と出所を確認し、対象ファイルのプロパティからブロックを解除します。

組織のポリシーで実行できない場合は管理者へ確認し、ポリシーを回避して実行しないでください。

下のコードをpng-names.ps1として保存し、-Targetへフォルダーか、その中のファイルを1つ指定します。

param([Parameter(Mandatory=$true)][string]$Target,
      [string]$Output,
      [switch]$ToClipboard)
$ErrorActionPreference = 'Stop'
if (-not $Output) { $Output = Join-Path $PSScriptRoot 'png-names.txt' }
$item = Get-Item -LiteralPath $Target
$folder = if ($item.PSIsContainer) { $item.FullName } else { $item.DirectoryName }
$names = @(Get-ChildItem -LiteralPath $folder -File -Force |
    Where-Object Extension -ieq '.png' | Sort-Object Name | Select-Object -ExpandProperty Name)
if (-not $names.Count) { throw 'No PNG files; clipboard unchanged' }
if ($ToClipboard) {
    Set-Clipboard -Value ($names -join [Environment]::NewLine)
} else {
    if (Test-Path -LiteralPath $Output) { throw 'Output exists; choose a new filename' }
    $text = ($names -join [Environment]::NewLine) + [Environment]::NewLine
    [IO.File]::WriteAllText([IO.Path]::GetFullPath($Output), $text, [Text.UTF8Encoding]::new($true))
}
$names
powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File "png-names.ps1" -Target "C:\Practice\画像 資料"

PS1と同じ場所へpng-names.txtがUTF-8(BOM付き)で作成され、a.pngと日本語 ! & [x].PNGの2行を確認できます。

フォルダー内の.pngと.PNGを対象とし、サブフォルダーの画像やJPGは含めません。

送るメニューからクリップボードへ取得する

  1. png-names.ps1と下のBATをpng-names.batとして同じ場所へ保存する
  2. Win+Rでshell:sendtoを開き、png-names.batへのショートカットを置く
  3. 対象フォルダーか、その中のファイルを1つ選び、送るからショートカットを実行する
  4. テキストエディターへ貼り付け、PNG名の一覧を確認する
@echo off
setlocal DisableDelayedExpansion
if "%~1"=="" exit /b 1
powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File "%~dp0png-names.ps1" -Target "%~1" -ToClipboard
exit /b %errorlevel%

最初の選択項目だけを使い、ファイルならその親フォルダーを一覧の対象にします。

クリップボードの以前の内容は置き換わるため、残したい内容を先に保存してください。

一覧が出ないときの確認と戻し方

対象パスが存在しない場合やPNGがない場合はエラーで止まり、クリップボードは変更しません。

テキスト出力先が既にある場合は上書きせず停止するため、-Outputで新しい絶対パスを指定します。

送るから実行して別の場所の一覧になる場合は、ショートカットのリンク先と、PS1がBATの隣にあるかを確認します。

画像ファイルは変更しないため、戻す操作は不要で、SendToをやめる場合は登録したショートカットだけを外します。

2026年10月2日にWindowsでUTF-8出力とクリップボードの日本語一致、選択ファイルの親を使うBATを検証しました。

Explorerの送るメニューをクリックする操作自体は今回の検証に含みません。

仕様:Microsoft公式 cd、dir。

業務効率化に役立つその他のツールや設定は、以下のリンクから確認できます。

Windowsバッチの記事は、ほかにもあります。

まとめ

対象パスを明示し、PNG名の一覧をUTF-8ファイルかクリップボードへ取得します。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

仕事効率化のおすすめ書籍

仕事用PCの選び方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次