プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Windowsバッチファイル(.bat)、文字列のバイト数を取得する
結論から書くと

そんなことをバッチファイルでやろうとするな(-A-)

と言いたいところですが、そうも言ってられない状況だったので
かなりの勢いで微妙な気はしますが、作ってみましたφ(--)

@echo off

REM バイト数を取得する対象の文字列
set str=%1

REM 文字列のバイト数
set strblen=0

REM 文字列をファイルに出力する
echo %str% > tmp.txt

if not "%str%" == "" (
    REM 文字列のバイト数取得
    for %%i in (tmp.txt) do (
        set /a strblen=%%~zi-3
    )
) else (
    REM 文字列無し
    set strblen=0
)

echo "%str%の文字数%strblen%"

REM ファイルを削除
del tmp.txt

pause

引数で文字列を与えると、文字列のバイト数(半角1バイト、全角2バイト計算)を返してくれます。

仕組み自体は単純で、文字列をテキストファイルに書きだして、
そのテキストファイルのバイト数を取得しているだけです。

echo %str% > tmp.txt

でファイルに出力して

for %%i in (tmp.txt) do (
    set /a strblen=%%~zi-3
)

でファイルサイズを取得し、文字列のバイト数を計算しています。
「-3」が気になるかもしれませんが、ファイルに出力されている内容は

%str%【半角スペース】【改行】

になっているので、後ろの半角スペースと改行の分の3バイトを削っているわけです。

全体としては

1.文字列をファイルに格納
2.ファイルサイズを取得
3.文字列のバイト数を計算

の流れですね。

「正直、どうなんよ?」と思わなくもないのですが、
それっぽいコマンドとか見つからなかったんですよ(--ゞ

他に素敵なやり方をご存知の方がいらっしゃいましたら、
こっそり教えていただけたら嬉しいです。

取りあえず、そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:コマンド/バッチ  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事