ascii文字で大きな表示

業務ではボツネタになったけどせっかく作ったので置いとく。

active directoryに参加している企業内のPCには、ログイン時に特定の処理をさせることができる。
バッチ処理動かすとか、パワーシェル動かすとかね。

そんな中でカウントダウン表示したいから「文字を大きく表示させて欲しい」なんてのがあった。

習作として作っておいたもののメモ。

結論

こんなのが表示できる。

ascii

なぜかwindowsのハードコピーうまくmacに持って来れんかったから、いったん写真。

練習のアスキーアート

アスキーアートってのがある。
jpegをアップロードしたらテキスト表示してくれるサイトあるので、練習でやってみた。

作者さんありがとう。wordで「wordアート」使って臨時で作った文書を変換してみた。

AA変換(アスキーアート生成)|Web便利ツール@ツールタロウ
画像からアスキーアートを自動作成するWebツール。横幅200文字のサイズまで生成可能で、画像・テキスト両方で保存可能。PC・スマートフォン・タブレットのブラウザで使えます。常時SSL対応。

最初はこんなん作った。

ascii

なんか砂ボコリ上がってるようにも見えるし、目がチカチカする。
wordアート作戦はやっぱやめとこ。

文字を作る

macの中でkubernetesを動かすときにminikube使う。

けっこう勉強で使わせてもらってて、dockerコンテナとして動いてるminikubeにsshするときこんな表示が出る。

その中ではminikube sshってコマンドライン打つと、バナーが表示される。

こんな感じ。

nari@gvis-mac minikube %
nari@gvis-mac minikube % minikube ssh
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

こんな感じで作りたかったんやけど、文字を変更してくれるサイト見つけられず・・・。

それでも、純粋に文字をドット絵みたいにとらえて巨大化してくれるサイトを見つけた。

作者さんありがとう。

巨大文字AAジェネレーター
任意のテキストまたは画像ファイルから、お好きなサイズの巨大な文字AA(アスキーアート)を生成します。絵文字を使った巨大文字AAや、回転や反転された巨大文字AAも作成できます。

これで文字が作れる。

                                                                        
    ■            ■■■            ■            ■           ■            ■ 
    ■              ■            ■           ■   ■        ■            ■ 
 ■■■■■■■                  ■■■■■■■■■■       ■■  ■ ■       ■            ■ 
   ■■          ■■■■■■           ■         ■              ■            ■ 
   ■           ■    ■■       ■■■■        ■               ■            ■ 
 ■■■■■■              ■       ■  ■        ■■              ■            ■ 
   ■    ■■           ■       ■  ■         ■■             ■            ■ 
   ■     ■          ■■       ■■■■          ■■                           
   ■     ■         ■■          ■■           ■■           ■            ■ 
   ■■   ■        ■■■          ■■             ■■          ■            ■ 
    ■■■■                     ■                                          
                                            

おお、できたできた。
これでカウントダウン用の数字のテキストを作って、こんな感じに置いとく。

nari@gvis-mac text % ls -l etc/work/text
total 104
-rw-r--r--  1 nari  staff   251  2 13 11:40 0.txt
-rw-r--r--  1 nari  staff   251  2 13 11:40 1.txt
-rw-r--r--  1 nari  staff   251  2 13 11:40 2.txt
-rw-r--r--  1 nari  staff   251  2 13 11:40 3.txt
-rw-r--r--  1 nari  staff   251  2 13 11:40 4.txt
-rw-r--r--  1 nari  staff   251  2 13 11:40 5.txt
-rw-r--r--  1 nari  staff   251  2 13 11:40 6.txt
-rw-r--r--  1 nari  staff   251  2 13 11:40 7.txt
-rw-r--r--  1 nari  staff   251  2 13 11:40 8.txt
-rw-r--r--  1 nari  staff   251  2 13 11:40 9.txt
-rw-r--r--  1 nari  staff   308  2 13 11:43 日.txt
-rw-r--r--  1 nari  staff   700  2 13 11:42 あと.txt
-rw-r--r--  1 nari  staff  2737  2 13 11:40 もうすぐ.txt
nari@gvis-mac text % 

シンプルにバッチファイル作る

こんな感じ。
linuxの文字列系コマンドでpasteってのがあって、catとは違って横にファイルを連結する方法があるんやけど、dosとかパワーシェルとかになかった。

でもdosで実現されている方がいて、それを改造して流用させてもらった。

@echo off
rem --- set initial env
set HOMEDIR=Y:¥etc¥work           ⭐️ 作業フォルダ指定しといてリロケータブルにしましょ、今はsambaのファイルシステム指定

rem --set day                       ⭐️ 作りかけたけど途中でとりやめになったところ
rem powershell "%HOMEDIR&¥BetweenDays.ps1;exit $LASTEXITCODE"
rem set REMAIN=%ERRRORLEVEL%
rem set echo REMAIN=%ERRORLEVEL%
rem pause
set REMAIN=12                       ⭐️ いったん残り日数を指定、本当はpowershellで計算させようとしてた
rem pause

rem --- get day
set TMP=%HOMEDIR%¥TMP.txt
set TMP1=%HOMEDIR%¥TMP1.txt
set TMP2=%HOMEDIR%¥TMP2.txt
set TMP3=%HOMEDIR%¥TMP3.txt
set REMAIN1=%REMAIN:~0.1%           ⭐️ このまま使ったら残り日数1桁になったときうまくいかんはず
set REMAIN2=%REMAIN:~1.1%           ⭐️ このまま使ったら残り日数1桁になったときうまくいかんはず

rem --- set dos window size
mode con: cols=150 lines=40         ⭐️ dos窓サイズを指定してんねん

rem --- echo main title
type %HOMEDIR%¥text¥もうすぐ.txt

rem --- echo days                   ⭐️ テキストファイルを縦に連結やなくて、横に連結すんねん

call %HOMEDIR%¥pasteCMD.bat %HOMEDIR%¥text¥あと.txt %HOMEDIR%text¥%REMAIN1%.txt %TMP1%
call %HOMEDIR%¥pasteCMD.bat %TMP1%                    %HOMEDIR%text¥%REMAIN2%.txt %TMP2%
call %HOMEDIR%¥pasteCMD.bat %TMP2%                    %HOMEDIR%text¥日.txt        %TMP3%
copy /Y $TMP3% %TMP%

type %TMP%
del /F %TMP% %TMP1% %TMP2% %TMP3% 

pause
exit

powershellは作りかけたけど途中でとりやめになった

テスト表示のサンプルを依頼者に見せると、「html使いましょ」ってことになったので作るの途中でやめた。

日付間の日数を計算させる処理を作ってたんやけどボツ。

返り値に数値してたんやけど、作業pcでpowershellの実行禁じられててストレートに動かずコメント化してた。

呼び出し先処理はこんな感じ。
今日から特定の日付(ここでは練習で4月1日ね)の日数差分を求めて返すだけ。

$future = @DateTime]::ParseExact("20240401","yyyyMMdd", $null);
$today = Get-Date ;
$span = $future - $today ;
Write-Host $span.Days;

exit $span

帰ってきた日数はファイル名指定に連動して、横連結するファイル名指定になるのよ。

テキストファイルを横に連結

dosならtype、linuxならcatで2つのファイルを上から順に表示させられる。
これを横に連結する。

例えば、1.txtと2.txtをtypeで縦に表示させると、こんな感じ。

  ■■
 ■ ■
   ■
   ■
   ■
   ■
   ■
   ■
   ■

  ■■■■  
 ■■  ■■ 
      ■ 
      ■ 
    ■■  
   ■    
  ■     
 ■      
 ■■■■■■■

これを横連結して表示させるのがpaste。

  ■■     ■■■■  
 ■ ■    ■■  ■■ 
   ■         ■ 
   ■         ■ 
   ■       ■■  
   ■      ■    
   ■     ■     
   ■    ■      
   ■    ■■■■■■■

ここは1から作るの苦しいから、ググってみたら出てきた。
作者さんありがとう。

http://hansupu.blog70.fc2.com/blog-entry-1195.html

そのままだと思った動きにはならないので、pasteの本体がこんな感じで書いておいて呼び出し。

set OUTPUT=%3
set IPT1=%1
set IPT2=%2
if exist %OUTPUT% del %OUTPUT%
set N=0
set S=
for /F "tokens=1* delims=: eol=" %%A in ('findstr /n "^" %IPT1%') do call :sub "%%B"
goto :eof
:sub
for /F "%S% tokens=1* delims=: eol=" %%C in ('findstr /n "^" %IPT2%') do >> %OUTPUT% echo.%~1 %%D&goto next
:next
set /A N+=1
set S=skip=%N%

連結するテキストファイルでちょっと工夫しなきゃいけないのは、数字のテキストファイルを全部同じ行数・横幅にしとく。
あと、他に表示させるテキストは行数を数字のテキストファイルとそろえとく。
これで表示はされる。

windows版のpasteは機械学習なんかでデータ連結をwindows側でやりたいときなんかにも使えるんとちゃうか。

またいつか思い出したらこのメモ使おっと。

タイトルとURLをコピーしました