前回記事
の続きです。
アメブロのWebページHTMLを保存したファイルを、
ローカルのPCでも、「正しく?!」表示できるように「修正」を加えるための バッチファイル
を作成しました。(ただし、sed.exe が必要です)
※前回の記事で、この話題はこれで終わりにする、と書きましたが、
この「バッチファイル」に関しては引き続き書きたいと思いますので、
"正しく表示されない"、ということ自体については、もうこれ以上書きませんが、
このバッチファイルについては、さらに書きたいと思っております。
以下は、そのバッチファイルの内容です。
へたくそ!だと、笑わないでね。。。(;^_^A
[AmbakFixHTM_01.bat]の内容.
*----------------------------------------------------------------------------------*
@echo off
rem : AmbakFixHTM_01.bat
rem :
rem : アメブロのページを保存したバックアップのHTMLファイルが、
rem : ローカルPCでは正しく表示されないのを修正する。
rem :
rem : 動作:
rem : 修正前ファイルの名前(.拡張子の直前)に -fixを付加した名前の修正後ファイルを、
rem : 修正前ファイルがあるフォルダと同じフォルダ内に作成する(sed.exeが必要)。
rem :
rem : 使い方:
rem : 修正前ファイルを、
rem : このバッチファイルの(ショートカットの)アイコンにドロップする。
rem :
rem :: Usage:
rem :: AmbakFixHTM_01.bat [(修正前ファイルのフルパス名)|-h|/?]
rem ::
rem : ※環境変数の説明.
rem : _$ambak : アメブロのページを保存しているフォルダのパス.
rem : _$ambfn : アメブロのページを保存したバックアップのファイル名.
rem : _$ambfnfix : 修正後のファイル名.
rem : _$tmpVIEW : 説明書を表示するテキストファイル表示プログラムを指定.
rem :
rem :--- ※注意: sed.exe がないと動作しません!
rem :--- このバッチファイルのファイル名拡張子は .bat か .cmd であること。
rem :--- (↑そうでないと、この説明書が表示されません!)
rem :--- 空白文字を含むパス名、ファイル名にはちゃんと対応できない?!と思います。
rem :---
rem : 0:11 2017/04/16
rem 環境変数の初期化.
rem // 作業用ファイル名等.
set _$ambak=
set _$ambfn=
set _$ambfnfix=
set _$ambakfn=%1
set _$ambSED=s)\"//)\"http://)g
rem // 一時使用.
set _$tmpSED="s/^rem ://p"
set _$tmpTXT=%TMP%\AmbTmp.txt
set _$tmp0=%0
set _$tmpFn=
set _$tmpFx=
set _$tmpVIEW=
rem このバッチがある場所をカレントにする.
rem ※パスが通っていない対策.
pushd %0\..
rem コマンド引数がない、または /?, -h などなら使い方を表示.
if "%1" == "" goto USAGEVIEW
if "%1" == "/?" goto USAGEVIEW
if "%1" == "-?" goto USAGEVIEW
if "%1" == "-h" goto USAGEECHO
if not exist "%1" goto USAGEVIEW
goto HAJIME
rem 以下、ラベル :HAJIME まではサブルーチン及びエラー処理.
:_FIXTMP0
rem 環境変数 _$tmp0 を修正する(%0 に拡張子を付加する?)サブルーチン.
for %%X in ( bat cmd ) do (
if exist "%_$tmp0%.%%X" (
set _$tmp0=%_$tmp0%.%%X
goto :EOF
)
)
:ERR_p0-NOTFOUND
rem 説明書が作成できない!
echo エラー!:
echo %0 が見つかりません。(゜_゜;)ゞえェ~っ?!?!
echo ・・・ので、説明書が表示できませんでした。。。
rem DEGUB: goto _ENDOFFILE_
goto :EOF
goto OWARI
:ERR_SPLITFALSE
rem パス名ファイル名の切り分けに失敗!
echo エラー!:
echo パス名ファイル名の切り分けがうまくいきませんでした。(~_~;)汗.
rem DEGUB: goto _ENDOFFILE_
goto OWARI
goto ERR_CANNOTCREATE
rem 作成したはずのファイルが見つからない!
echo エラー!:
echo (なぜか?)ファイルが作成できませんでした。(/_;)泣.
rem DEGUB: goto _ENDOFFILE_
goto OWARI
:USAGE
rem 使い方を画面に表示.
:USAGEVIEW
if not exist "%_$tmp0%" call :_FIXTMP0
if not exist "%_$tmp0%" goto USAGEECHO
sed -ne %_$tmpSED% < "%_$tmp0%" > "%_$tmpTXT%"
%_$tmpVIEW% "%_$tmpTXT%"
goto OWARI
:USAGEECHO
echo Usage: 使い方.
echo %0 [(修正前ファイルのフルパス名)|-h|/?]
echo.
goto OWARI
rem *************************************************************
:HAJIME
rem ここから始め.
rem DEBUG: echo %_$tmp0%
rem DEBUG: echo %_$ambakfn%
rem パス名ファイル名の切り分け.
for /F "usebackq delims=" %%F in ( `echo %_$ambakfn%` ) do (
set _$ambak=%%~dpF%
set _$ambfn=%%~nxF%
set _$tmpFn=%%~nF%
set _$tmpFx=%%~xF%
)
rem 正しく切り分けたかどうか点検.
if not exist "%_$ambak%%_$ambfn%" goto ERR_SPLITFALSE
if not "%_$ambak%%_$ambfn%" == "%_$ambakfn%" goto ERR_SPLITFALSE
rem 作成する修正ファイルの名前.
set _$ambfnfix=%_$tmpFn%-fix%_$tmpFx%
set _$tmpFn=
set _$tmpFx=
rem 置換実行.
sed -e %_$ambSED% < "%_$ambakfn%" > "%_$ambak%%_$ambfnfix%"
rem 作成できたか?
if not exist "%_$ambak%%_$ambfnfix%" goto ERR_CANNOTCREATE
goto OWARI
rem *************************************************************
:OWARI
rem 終わり。後始末.
if exist %_$tmpTXT% del %_$tmpTXT%
set _$ambakfn=
set _$ambSED=
set _$tmpSED=
set _$tmpTXT=
set _$tmp0=
set _$tmpFn=
set _$tmpFx=
set _$tmpVIEW=
popd
:_ENDOFFILE_
*----------------------------------------------------------------------------------*
ご覧になられましたら、もうすぐにおわかりのとおり、...
このバッチファイルには、いくつもの!重大な欠陥があります。!!!!
それらのいくつかについて、
次回以降の記事で書いてみようかと、思っております。(・・ので、怒らないでね。m(_ _)m)
一応は動作しますので、
(アメブロのページを保存している)USBメモリ(の適当なフォルダ)に保存して、
USBメモリディスクのルートディレクトリにショートカットを作成しました。
※バッチファイルのショートカットをUSBメモリに作成した。。。
ショートカットのプロパティを開き、実行時のコマンドウインドウ表示の大きさを「最小化」にします。
名前やアイコンも適当に変更しました。
※プロパティを開いて、バッチファイル(のショートカット)の実行時の大きさを変更しているところ。
アメブロのページを保存したファイルを、このショートカットアイコンにドロップしてみます。。。
(ドラッグ&ドロップ、というらしい...)
※対象のファイルをアイコンにドロップ。。。
修正ファイルが作成されました。
このファイルをブラウザで表示すると、「正しく」表示できました。。。
※修正ファイルが作成されました。。。
次回は、
このバッチファイルの欠陥について、書いていこうかな・・・
と思っております。(が、どうなるかは未定)