[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
「このルート証明書、入っていますか?」を他者に確認してほしいことがあり、GUI から探してもらうのは大変だなと思ったので確認した。
certutil -store AuthRoot
これで手元のルート証明書を一覧できる。今回は「Baltimore CyberTrust Root」の有無を確認したかったので以下のようにしてもらうと良いだろう。
certutil -store AuthRoot | find "Baltimore CyberTrust Root"
末尾に以下を挿入する。
del %0
del
はその名の通りファイルを削除するコマンド。ちなみにこのコマンドだとフォルダは消せない。フォルダを消したければ rd
コマンドを使う。Remove Directory の略か。
%0
は自身を指すファイル名となる。バッチスクリプトに渡される n 番目の引数は %n
となるが、0番目の引数は実行されているバッチスクリプトそのものを指す。
実行されるファイルの前後にスペースがある場合などはダブルクォートで囲むなど工夫しましょう。
こんな感じ。attrib
でファイルの属性をとり、findstr
で判定。findstr
の結果は ERRORLEVEL
に格納されているのにそれを結果として利用。
REM isFile.bat attrib %1 > TMP_ATTRIB findstr /R "^A.*" TMP_ATTRIB 1>nul if ERRORLEVEL 1 ( REM ディレクトリ del TMP_ATTRIB exit /b 1 ) else ( REM ファイル del TMP_ATTRIB exit /b 0 )
こんな感じで呼び出す。以下のバッチスクリプトを保存して上述のバッチスクリプトを isFile.bat と命名して同じディレクトリに配置、exec.bat に判定したいファイルをドラッグ・ドロップすることで実行。
ドラッグ・ドロップしたファイル群をループで処理する際は for %%f in (%*) do ()
を用いる。バッチスクリプト内から別のバッチスクリプトを呼び出す際には call
を用いる。
REM exec.bat chcp 65001 echo off set execBatDir=%~dp0 for %%f in (%*) do ( call %execBatDir%\isFile.bat %%f if ERRORLEVEL 1 ( echo %%fはディレクトリ ) else ( echo %%fはファイル ) ) pause
.bat に zip したいファイルを drag / drop すると zip ファイルを生成できるものをつくった。要 java。jar コマンドを使っているので。
chcp 65001 echo off setlocal enabledelayedexpansion set cDir=%~dp0 set empty= del FILE_LIST.txt echo %cDir% for %%a in (%*) do ( set tmpFileName=%%a echo !tmpFileName:%cDir%=%empty%!>>FILE_LIST.txt ) jar -cvfM ziped.zip FILE_LIST.txt for %%a in (%*) do ( set tmpFileName=%%a jar -uvf ziped.zip !tmpFileName:%cDir%=%empty%! ) jar -tf ziped.zip pause
https://github.com/Shunshun94/discord-bcdicebot/blob/59db4f60d6966c2d4edb81c69927e41185d7814e/validate.bat のように設定ファイルを評価するバッチファイルを書いてみた。
L1 のようにCHCP 65001
などとして文字コードを指定してあげないと出力が文字化けなどする。注意。
L7-L13 で Java のインストール有無を確認している。直前のコマンドの成否は L8 のように errorlevel が 0 か否かのチェックで分かる。
discord-bcdicebot は設定ファイル内で環境変数を設定している。この環境変数の値が妥当でなければ動かないので、環境変数の値を見たい。
L18 のようにすることで設定ファイル start.bat の中身のうち set
で始まる行だけ抽出して実行する、ということをしている。すなわち、ここで環境変数の設定を実行している。
L21-27 で Discord の token の妥当性を確認している。とはいっても、記載された token を用いて bot の情報取得を試み、401 エラーが返ってこないことを確認しているだけである。
現在 Windows 10 には curl コマンドが標準で入っているため、これを使う。--fail
オプションをつけて curl を実行することで curl の結果が 4XX や 5XX だった場合に errorlevel が0ではなくなる。あとは Java のときと同様に errorlevel を評価すれば良い。
L33-L47 にて BCDice-API サーバの URL が妥当であるか確認している。この手順はここまでの手順の組み合わせである。ただ、サーバに何か値を渡して評価しているわけではないので URL がおかしかった場合に返ってきた文字列も評価している。