概要
素のwindowsパソコンでパスワード生成したい瞬間がありませんか。私はありました。
でもcmdというか.batだけではどうにもならなかったのでタイトルに反してWHS JScriptも使っています。
JScript(ジェイスクリプト)はECMAScript3に準拠しているらしいので、2011年頃のちょっと古いJavaScriptが素のwindowsで使えるそうです。なんだか夢が広がりますね。(ECMAScript3というと、Adobe ExtendScriptとかと同じかな…)
参考
コード
今回はgetPasswd.batとpasswd.jsという2つのテキストファイルを作成して使います。
頑張ればbat内でpasswd.jsにコードを書き込んだのち実行して削除、結果だけ表示みたいなことができるはずですが、面倒なのでしません。
getPasswd.bat
getPasswd.batファイルを作成して下記を記入します。エンコードはマルチバイト文字を扱うならどちらもshift-jisにしたほうがよいです。
内容的にはJScriptでパスワードを作成する部分を動かして結果だけ取得しています。
REM 自動でクリップボードにコピーしたい場合は下記と差し替える
REM cscript /nologo passwd.js | clip
REM コマンドプロンプトに生成したパスワードを表示させる
cscript /nologo passwd.js
PAUSE
passwd.js
passwd.jsというファイルを作成して下記のコードを記入し保存します。
古いjsしか使えないため、letとかconstは使うとエラーになるので、変数は全部varで宣言しています。
MDNには「Math.random() の提供する乱数は、暗号に使用可能な安全性を備えていません。セキュリティに関連する目的では使用しないでください。」とあるので、本当はパスワードに使用するのはよくないと思うのですが、とにかくランダムな英数字がほしかったので…。
var password_base = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; function genPassword(length) { var password = ''; for (var i = 0; i < length; i++) { password += password_base.charAt(Math.floor(Math.random() * password_base.length)); } return password; } // 13文字のパスワードにする var len = 13; // WScript.echoとするとコマンドプロンプトに表示される WScript.echo(genPassword(len));
使い方
getPasswd.batとpasswd.jsを同じ階層に置き、getPasswd.batを実行すると下記のような文章が出てきてパスワードが生成されます。
「AYtJleIjms4o7」の部分がそうです。
選択して右クリックすると勝手にコピーされます。
C:\Users\>REM クリップボードにコピー
C:\Users\>REM cscript /nologo passwd.js | clip
C:\Users\>cscript /nologo passwd.js
AYtJleIjms4o7
C:\Users\>PAUSE
Press any key to continue . . .
おわり。