フォルダ配下の画像一覧HTMLの作成バッチ
はじめに
「アニメーションGIF」はエクスプローラ上だとアニメーションされないらしく、一挙に数十ファイルのアニメーションGIFを1ウインドウで表示させたい。
というワガママさんに、一覧表示するHTMLを出力するからブラウザで見ろと対応した。
使い方
- 一気に表示させたい画像を一つのフォルダにまとめる
- 作ったバッチをそのフォルダにコピーする
- バッチを実行する
- "thumbnail.html"が作成されるのでブラウザで表示する
作ったバッチ
make_thumbnail_html.bat
@echo off
rem 画像をタイル状に表示させるHTMLを作るバッチ
rem 出力するファイル名
set HTML_FILE=thumbnail.html
rem タイルの列数
set TABLE_COLUMNS=3
rem タイルの幅(画像の幅)
set IMAGE_WIDTH=300
rem 検出する画像ファイルの拡張子
set FILE_TYPES=*.gif, *.png, *.jpeg, *.jpg, *.bmp
rem 出力先のファイルを消す(あったら)
if exist "%HTML_FILE%" del "%HTML_FILE%"
rem フォルダの名前を取得する
for %%I in (.) do set CUR_DIRNAME=%%~nI%%~xI
rem HTMLファイルの先頭部を出力する
call :OUT_HTML "^<!DOCTYPE html^>"
call :OUT_HTML "^<html lang='ja'^>"
call :OUT_HTML "^<head^>"
call :OUT_HTML "^<meta charset='Shift_JIS'^>"
call :OUT_HTML "^<title^>%CUR_DIRNAME%^</title^>"
call :OUT_HTML "^<style type='text/css'^>^<!-- td {vertical-align:top;}--^>^</style^>"
call :OUT_HTML "^</head^>"
call :OUT_HTML "^<body^>"
set /a FILE_COUNT=0
set /a COLUMN_NO=0
call :OUT_HTML "^<table^>"
rem ファイルを検索してタイルを出力する
for %%a in (%FILE_TYPES%) do (
echo %%a
call :OUT_TD_TAG "%%a"
)
rem 列数に満たなかった分だけ空のTDタグを出力する
if %COLUMN_NO% LSS %TABLE_COLUMNS% (
call :OUT_DUMMY_TD_TAG
)
call :OUT_HTML "^</table^>"
rem HTMLファイルの終端部を出力する
call :OUT_HTML "^</body^>"
call :OUT_HTML "^</html^>"
goto :EOF
rem ============================================================
:OUT_TD_TAG
set IMAGE_FILE=%~1
rem 列番号を求める
set /A COLUMN_NO=%FILE_COUNT% %% %TABLE_COLUMNS% + 1
rem 1列目ならTRタグを出力する
if %COLUMN_NO% EQU 1 (
call :OUT_HTML "^<tr^>"
)
rem 画像用タグを出力する
call :OUT_HTML " ^<td^>"
if "%IMAGE_FILE%" NEQ "" (
call :OUT_HTML " %IMAGE_FILE%^<br/^>"
call :OUT_HTML " ^<img width='%IMAGE_WIDTH%' src='%IMAGE_FILE%' /^>"
)
call :OUT_HTML " ^</td^>"
rem 最終列なら/TRタグを出力する
if %COLUMN_NO% EQU %TABLE_COLUMNS% (
call :OUT_HTML "^</tr^>"
)
rem ファイル数を数える
set /a FILE_COUNT=%FILE_COUNT%+1
exit /b
rem ============================================================
:OUT_DUMMY_TD_TAG
rem 列数に満たない分のTDタグの個数を計算する
set /A DUMMY_LOOP=%TABLE_COLUMNS%-%COLUMN_NO%
rem 空のTDタグを出力する
for /l %%i in (1,1,%DUMMY_LOOP%) do (
call :OUT_TD_TAG ""
)
exit /b
rem ============================================================
:OUT_HTML
set OUT_TEXT=%1
set OUT_TEXT=%OUT_TEXT:^^=^%
echo %OUT_TEXT:"=% >> %HTML_FILE%
exit /b
まとめ
Windows Batchだけで心配だったが、なんとか出力できた。
アニメーションGIF数十ファイルを表示させると壮観だが結構うざい。
HTMLタグ<
,>
のエスケープが面倒で、他に良い方法が思いつかなかった。
バッチファイルのセオリーのようなものが見つからなかったので、もう少し調べてみようと思う。
Author And Source
この問題について(フォルダ配下の画像一覧HTMLの作成バッチ), 我々は、より多くの情報をここで見つけました https://qiita.com/hirox404/items/270ec27f13b55d8ad7ad著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .