Windows標準機能だけで簡単に現在の時刻の秒数を(一時的に)確認する

はじめに

Windows 11には、タスクバーに秒数を表示するオプションができた。それを切り替えやすくするバッチを組んだので、共有する。

内容

メモ帳を起動して以下の内容をコピーしメモ帳に貼り付ける。名前をToggleSystemClockSeconds.batとして保存する。

@echo off
reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v ShowSecondsInSystemClock | find "0x0"

if %ERRORLEVEL%==0 (
goto Set_1
) else if %ERRORLEVEL%==1 (
goto Set_0
)

:Set_1
reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v ShowSecondsInSystemClock /t REG_DWORD /d 0x1 /f
exit /b

:Set_0
reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v ShowSecondsInSystemClock /t REG_DWORD /d 0x0 /f
exit /b

これをダブルクリック等で実行するとタスクバーの秒数表示が切り替わる。
やってることは単純で、HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AdvancedというレジストリのキーにあるShowSecondsInSystemClockという値の0と1を切り替えているだけである。
何のレジストリかというと、

ここである。

これだけだとつまらないが、ショートカットファイルを作るととても便利になる。

適当なショートカットキーを設定。実行時の大きさを最小化とすると、ショートカットキーを押すだけで秒数表示が切り替わる。便利。

おわりに

標準機能で秒数を簡単に(一時的に)確認できました。

付録

ショートカットを作るバッチ

@if(0)==(0) echo off
cscript.exe //nologo //E:JScript "%~f0" %*
goto :EOF
@end

// メイン処理
function main() {
    var shortcut = null;
    try {
        // ショートカットを作成する
        shortcut = new ShortcutCreater();
        shortcut.create();

        // 作成したショートカットをコンソールに出力する
        Console.println("ショートカットを作成しました");
        Console.println(shortcut);

    } catch (e) {

        // 例外原因をコンソールに出力する
        Console.println("[error occured]: " + e.description);

        // 異常終了でコマンドを返す
        Console.back(e.number);

    } finally {

        // WSHオブジェクトを片付ける
        if (shortcut !== null)
            shortcut.cleanup();
    }

    // 正常終了でコマンドを返す
    Console.back(0);
}

// コンソール汎用クラス
var Console = ((function() {
    var constructor = function() {}
    constructor.println = echoConsole;
    constructor.back = exitScript;
    return constructor;
})())

// ショートカットを作るクラス
var ShortcutCreater = function() {
    this.wshObj = openWsh();
    this.file = this.wshObj.SpecialFolders("Desktop") + "\\秒数表示切替.lnk";
    this.link = "%USERPROFILE%\\Downloads\\ToggleSystemClockSeconds.bat";
    this.hotkey = "Ctrl+Shift+C";
    this.winStyle = 7;
    this.desc = "システム トレイの時計の秒表示を切り替える";
    this.icon = "%SystemRoot%\\System32\\SHELL32.dll,249";
    this.create = createShortcut;
    this.cleanup = closeWsh;
    this.toString = createrToString;
}

// ----- 以降関数群 -------

function createShortcut() {
    var lnkFile = this.wshObj.CreateShortcut(this.file);
    lnkFile.TargetPath = this.link;
    lnkFile.Hotkey = this.hotkey;
    lnkFile.WindowStyle = this.winStyle;
    lnkFile.Description = this.desc;
    lnkFile.IconLocation = this.icon;
    lnkFile.Save();
}

function createrToString() {
    return "file=\"" + this.file + "\", linkTo=\"" + this.link + "\"";
}

function openWsh() {
    return WScript.CreateObject("WScript.Shell");
}

function closeWsh() {
    this.wshObj = null;
}

function echoConsole(msg) {
    WScript.echo(msg);
}

function exitScript(errNum) {
    WScript.Quit(errNum);
}

// メイン処理呼び出し
main();

参考

以下の記事のバッチをベースに改変しました。
https://qiita.com/y-takano/items/b94312abc17159dce8be