ファイルサイズ0キロバイトのファイルを検索しテキストファイルに書き出すバッチファイル

現在日時をクリップボードに取得するバッチファイル

サクラエディタのダウンロード

  • Releases · sakura-editor/sakura · GitHub
  • 最新のリリースから、以下のようなファイル名のファイルをダウンロードして、[すべて展開(T)…]で解凍した、インストールファイルを実行する。
sakura-tag-v2.4.2-build4203-a3e63915b-Win32-Release-Installer.zip 

現在日時をクリップボードに取得するバッチファイル

:: バッチファイルをUTF-8で保存するときのバッチファイルの先頭は、【1】【2】のどちらでもよい。
:: UTF-8保存時は[BOMなし]と[改行コードCR+LF]の設定が必須である。
:: ●●●【1】
:: @echo off
:: chcp 65001 > nul
:: ●●●【2】
:: chcp 65001 > nul
:: @echo off

@echo off
chcp 65001 > nul

:: 現在時刻〔日本時間〕をクリップボードに格納する
set TIME2=%TIME: =0%
echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%-%TIME2:~0,2%-%TIME2:~3,2%-%TIME2:~6,2%-09-00| clip

exit /b


Hugoの更新日時をクリップボードに取得するバッチファイル

:: バッチファイルをUTF-8で保存するときのバッチファイルの先頭は、【1】【2】のどちらでもよい。
:: UTF-8保存時は[BOMなし]と[改行コードCR+LF]の設定が必須である。
:: ●●●【1】
:: @echo off
:: chcp 65001 > nul
:: ●●●【2】
:: chcp 65001 > nul
:: @echo off

@echo off
chcp 65001 > nul

:: Hugo更新用の現在時刻〔日本時間〕をクリップボードに格納する
set TIME2=%TIME: =0%
echo lastmod = "%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%T%TIME2:~0,2%:%TIME2:~3,2%:%TIME2:~6,2%+09:00"| clip

exit /b


現在日時をファイル名とするHugoの記事のひな形を作るバッチファイルその1

:: バッチファイルをUTF-8で保存するときのバッチファイルの先頭は、【1】【2】のどちらでもよい。
:: UTF-8保存時は[BOMなし]と[改行コードCR+LF]の設定が必須である。
:: ●●●【1】
:: @echo off
:: chcp 65001 > nul
:: ●●●【2】
:: chcp 65001 > nul
:: @echo off

@echo off
chcp 65001 > nul

:: 作業ディレクトリに移動:任意のディレクトリ
cd C:\Users\%USERNAME%\Desktop\記述

:: 動的にファイル名を設定(時間や日付をファイル名に追加)
set TIME2=%TIME: =0%
set mdfilename=%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%-%TIME2:~0,2%-%TIME2:~3,2%-%TIME2:~6,2%-09-00
:: md ファイルに内容を書き込む
(
echo +++
echo date = "%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%T%TIME2:~0,2%:%TIME2:~3,2%:%TIME2:~6,2%+09:00"
echo slug = "%mdfilename%"
echo categories = ["●●●カテゴリー"]
echo tags = ["●●●タグ"]
echo title = "●●●タイトル"
echo +++
echo.
echo.
echo ## 見出し
echo.
) > "%mdfilename%.md"

:: WZ EDITOR で md ファイルを開く
start "" "C:\Program Files\WZ EDITOR 10\wzeditor.exe" "%mdfilename%.md"

exit /b


現在日時をファイル名とするHugoの記事のひな形を作るバッチファイルその2|バッチファイル自身を更新して常にフォルダー内の上位表示ファイルとする

:: ●●●ここから上は削除してよい●●●
:: バッチファイルをUTF-8で保存するときのバッチファイルの先頭は、【1】【2】のどちらでもよい。
:: UTF-8保存時は[BOMなし]と[改行コードCR+LF]の設定が必須である。
:: ●●●【1】
:: @echo off
:: chcp 65001 > nul
:: ●●●【2】
:: chcp 65001 > nul
:: @echo off

@echo off
setlocal enabledelayedexpansion

:: Last updated: !datetime!

chcp 65001 > nul
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set datetime=%%I
set datetime=%datetime:~0,14%
set "batchpath=%~f0"
copy "%batchpath%" "%temp%\temp_batch.bat" >nul
(
    echo @echo off
    echo setlocal enabledelayedexpansion
    echo.
    echo :: Last updated: !datetime!
    echo.
    type "%temp%\temp_batch.bat"
) > "%batchpath%"
del "%temp%\temp_batch.bat"

:: 以下、元のスクリプトの機能を実行

cd C:\Users\pure\Desktop\記述

set TIME2=%TIME: =0%
set mdfilename=%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%-%TIME2:~0,2%-%TIME2:~3,2%-%TIME2:~6,2%-09-00
(
echo +++
echo date = "%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%T%TIME2:~0,2%:%TIME2:~3,2%:%TIME2:~6,2%+09:00"
echo slug = "%mdfilename%"
echo categories = ["●●●カテゴリー"]
echo tags = ["●●●タグ"]
echo title = "●●●タイトル"
echo +++
echo.
echo.
echo ## ●●●タイトル
echo.
) > "%mdfilename%.md"

start "" "C:\Program Files\WZ EDITOR 10\wzeditor.exe" "%mdfilename%.md"

exit /b


ファイルを開きながらBlueGriffonを起動するバッチファイル

:: バッチファイルをUTF-8で保存するときのバッチファイルの先頭は、【1】【2】のどちらでもよい。
:: UTF-8保存時は[BOMなし]と[改行コードCR+LF]の設定が必須である。
:: ●●●【1】
:: @echo off
:: chcp 65001 > nul
:: ●●●【2】
:: chcp 65001 > nul
:: @echo off

@echo off
chcp 65001 > nul

start "" "C:\Program Files\BlueGriffon\bluegriffon.exe" C:\Users\%USERNAME%\Documents\note-archive.html

exit /b


Hugoの記事のひな形をセクションごとに作るバッチファイル|TXTファイルはUTF-8〔BOMなし〕CR+LFで保存して正常動作している

:: ●●●ここから上は削除してよい●●●
:: バッチファイルをUTF-8で保存するときのバッチファイルの先頭は、【1】【2】のどちらでもよい。
:: UTF-8保存時は[BOMなし]と[改行コードCR+LF]の設定が必須である。
:: ●●●【1】
:: @echo off
:: chcp 65001 > nul
:: ●●●【2】
:: chcp 65001 > nul
:: @echo off

@echo off
setlocal enabledelayedexpansion

:: 文字コード設定
chcp 65001 >nul

:: 設定ファイル読み込み
set "config_file=%~dp0select-folder-config.txt"
if not exist "%config_file%" (
    echo 設定ファイルが存在しません: %config_file%
    pause
    exit /b 1
)

:: レコード読み込み(BOM対策強化版)
set record_count=0
for /f "usebackq tokens=1-3 delims=	" %%a in ("%config_file%") do (
    set /a record_count+=1
    
    :: BOM除去処理
    set "clean_dir=%%a"
    set "clean_dir=!clean_dir:=!"
    set "clean_dir=!clean_dir:￯=!"
    
    set "record_dir_!record_count!=!clean_dir!"
    set "record_cat_!record_count!=%%b"
    set "record_tag_!record_count!=%%c"
)

:: レコード選択
:select_record
cls
if %record_count%==0 (
    echo 有効なレコードが存在しません
    pause
    exit /b 1
)

echo 作成するレコードを選択してください:
for /l %%i in (1,1,%record_count%) do (
    echo [%%i] ディレクトリ: !record_dir_%%i!
    echo     カテゴリ: !record_cat_%%i! / タグ: !record_tag_%%i!
    echo.
)
set /p record_choice="番号を入力 (1-%record_count%): "
if %record_choice% LSS 1 goto select_record
if %record_choice% GTR %record_count% goto select_record

:: 選択処理
set "target_dir=!record_dir_%record_choice%!"
set "target_cat=!record_cat_%record_choice%!"
set "target_tag=!record_tag_%record_choice%!"

:: ディレクトリ処理
if not exist "!target_dir!\" (
    mkdir "!target_dir!" 2>nul || (
        echo ディレクトリ作成に失敗しました: !target_dir!
        pause
        exit /b 1
    )
)

:: ディレクトリ移動
cd /d "!target_dir!" 2>nul || (
    echo ディレクトリ移動に失敗しました: !target_dir!
    pause
    exit /b 1
)

:: ファイル生成
set TIME2=%TIME: =0%
set mdfilename=%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%-%TIME2:~0,2%-%TIME2:~3,2%-%TIME2:~6,2%-09-00
(
    echo +++
    echo date = "%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%T%TIME2:~0,2%:%TIME2:~3,2%:%TIME2:~6,2%+09:00"
    echo slug = "%mdfilename%"
    echo categories = [!target_cat!]
    echo tags = [!target_tag!]
    echo title = "●●●タイトル"
    echo +++
    echo.
    echo.
    echo ## ●●●タイトル
    echo.
) > "!mdfilename!.md"

:: エディタ起動
if exist "C:\Program Files\WZ EDITOR 10\wzeditor.exe" (
    start "" "C:\Program Files\WZ EDITOR 10\wzeditor.exe" "!mdfilename!.md"
) else (
    notepad "!mdfilename!.md"
)

exit /b


C:\Hugo\Benkyo\content\chemistry	"高校化学"	"●●●タグ"
C:\Hugo\Benkyo\content\cinema	"カメラ・マイク・周辺機器・音響"	"●●●タグ"
C:\Hugo\Benkyo\content\database	"日本再生"	"日本と世界の崩壊と再生"
C:\Hugo\Benkyo\content\emergency	"防災と備蓄/サバイバル/オフグリッド"	"●●●タグ"
C:\Hugo\Benkyo\content\english-grammar	"英文法の整理法"	"英文法を正常な形式に整理し直す","ゼロから証明していく順番に読んでいくだけでわかる教科書","重複をいとわない教科書"
C:\Hugo\Benkyo\content\hints_to_ascend	"アセンション"	"●●●タグ"
C:\Hugo\Benkyo\content\jr-high	"中学"	"●●●タグ"
C:\Hugo\Benkyo\content\language	"言語"	"●●●タグ"
C:\Hugo\Benkyo\content\makoto	"真実情報"	"●●●タグ"
C:\Hugo\Benkyo\content\math	"高校数学"	"●●●タグ"
C:\Hugo\Benkyo\content\math-formulas	"高校数学の定義と公式"	"●●●タグ"
C:\Hugo\Benkyo\content\physics	"高校物理"	"●●●タグ"
C:\Hugo\Benkyo\content\sakura-editor	"サクラエディタ","正規表現","日本語表現"	"●●●タグ"
C:\Hugo\Benkyo\content\sharing	"ガジェットとアイテム"	"●●●タグ"
C:\Hugo\Benkyo\content\social-studies	"社会科〔地理・歴史・公民〕"	"世界史〔歴史総合+世界史探究〕"
C:\Hugo\Benkyo\content\software	"Windows環境構築"	"●●●タグ"
C:\Hugo\Benkyo\content\stationery	"文具"	"●●●タグ"
C:\Hugo\Benkyo\content\typesetting	"電子組版","電子出版","LaTeX"	"●●●タグ"
C:\Hugo\Benkyo\content\youtube	"YouTube動画"	"●●●タグ"


ファイルサイズ0キロバイトのファイルを検索しテキストファイルに書き出すバッチファイル

:: バッチファイルをUTF-8で保存するときのバッチファイルの先頭は、【1】【2】のどちらでもよい。
:: UTF-8保存時は[BOMなし]と[改行コードCR+LF]の設定が必須である。
:: ●●●【1】
:: @echo off
:: chcp 65001 > nul
:: ●●●【2】
:: chcp 65001 > nul
:: @echo off

@echo off
chcp 65001 > nul

rem 検索開始ディレクトリを指定(例:C:\work)
set "TARGET_DIR=C:\Hugo\Benkyo\content"

rem 結果を出力するファイル名
set "OUTPUT_FILE=zero_byte_files.txt"

rem 出力ファイルを初期化
> "%OUTPUT_FILE%" echo 0バイトファイル一覧

rem forfilesで0バイトファイルを検索し、フルパスを出力
forfiles /P "%TARGET_DIR%" /S /M *.* /C "cmd /c if @fsize==0 echo @path" >> "%OUTPUT_FILE%"

echo 完了しました。%OUTPUT_FILE% を確認してください。
pause

ファイルサイズ0キロバイトのファイル、および、空フォルダを検索しテキストファイルに書き出すバッチファイル

:: バッチファイルをUTF-8で保存するときのバッチファイルの先頭は、【1】【2】のどちらでもよい。
:: UTF-8保存時は[BOMなし]と[改行コードCR+LF]の設定が必須である。
:: ●●●【1】
:: @echo off
:: chcp 65001 > nul
:: ●●●【2】
:: chcp 65001 > nul
:: @echo off

@echo off
chcp 65001 >nul

set "TARGET_DIR=C:\Hugo\Benkyo\content"
set "OUTPUT_FILE=empty_files_folders.txt"
set "TMP_ZERO=__zero_byte_files.tmp"

rem 出力ファイル初期化
> "%OUTPUT_FILE%" (
    echo [0バイトファイル一覧]
    echo ======================
)

rem 0バイトファイル検索(いったん一時ファイルに出力)
forfiles /P "%TARGET_DIR%" /S /M *.* /C "cmd /c if @fsize==0 echo @path" > "%TMP_ZERO%"

rem 0バイトファイルが存在するか判定して出力
findstr . "%TMP_ZERO%" >nul
if %errorlevel% equ 0 (
    type "%TMP_ZERO%" >> "%OUTPUT_FILE%"
) else (
    echo !0バイトファイルは存在しませんでした >> "%OUTPUT_FILE%"
)
del "%TMP_ZERO%"

rem 空フォルダ検索(修正版)
>> "%OUTPUT_FILE%" (
    echo.
    echo [以下にファイルをもたないフォルダー一覧]
    echo ==================================
)

robocopy "%TARGET_DIR%" NULL /S /L /NJH /NJS /NDL /NC /NS /XD * 2>&1 | find "New Dir" >nul
if %errorlevel% equ 0 (
    robocopy "%TARGET_DIR%" NULL /S /L /NJH /NJS /NDL /NC /NS /XD * 2>&1 | find "New Dir" | find /v " 0 " >> "%OUTPUT_FILE%"
) else (
    >> "%OUTPUT_FILE%" echo !空フォルダは存在しませんでした
)

echo.
echo 完了しました。%OUTPUT_FILE% を確認してください
pause


サクラエディタのマクロを整理するバッチファイル|日付とファイルサイズでファイルを検索・分類する

:: バッチファイルをUTF-8で保存するときのバッチファイルの先頭は、【1】【2】のどちらでもよい。
:: UTF-8保存時は[BOMなし]と[改行コードCR+LF]の設定が必須である。
:: ●●●【1】
:: @echo off
:: chcp 65001 > nul
:: ●●●【2】
:: chcp 65001 > nul
:: @echo off

@echo off
chcp 65001 > nul

rem ===== 設定項目 =====
set "TARGET_DIR=C:\Users\pure\AppData\Roaming\sakura"
set "OUTPUT_FILE=sakura-editor-seiri.txt"
set "MIN_DATE=2021/01/01"
set "MAX_DATE=2023/12/31"
set "MAX_SIZE=4096"  rem バイト単位(例:2KB未満=2048未満)

rem ===== 実行処理 =====
> "%OUTPUT_FILE%" echo 検索結果一覧 [%DATE% %TIME%]

echo 検索実行中...
(
  echo $minDate = Get-Date '%MIN_DATE%'
  echo $maxDate = Get-Date '%MAX_DATE%'
  echo Get-ChildItem -LiteralPath '%TARGET_DIR%' -Recurse -File ^| ^
       Where-Object { ^
         $_.LastWriteTime -ge $minDate -and ^
         $_.LastWriteTime -le $maxDate -and ^
         $_.Length -lt %MAX_SIZE% ^
       } ^| ForEach-Object { $_.FullName }
) > tmp.ps1

powershell -ExecutionPolicy Bypass -File tmp.ps1 >> "%OUTPUT_FILE%"
del tmp.ps1

echo 完了しました。%OUTPUT_FILE% を確認してください。
pause


マウスでドラッグしてハイライトした部分のURLエンコードを行なうJavaScriptマクロ〔サクラエディタ用〕

//URLEncode.js
var oWsh = new ActiveXObject("WScript.Shell");
var sBuf;
sBuf = ExpandParameter("$C")
InsText(sBuf+"\n"+decodeURIComponent(sBuf));
//EOF


マウスでドラッグしてハイライトした部分のURLデコードを行なうJavaScriptマクロ〔サクラエディタ用〕

//URLDecode.js
var oWsh = new ActiveXObject("WScript.Shell");
var sBuf;
sBuf = ExpandParameter("$C")
InsText(sBuf+"\n"+decodeURIComponent(sBuf));
//EOF

絵文字として示される[矢印]と[パンクチュエーション]と[四則演算記号]などを通常のUnicode文字に置換するサクラエディタ・マクロ・ファイル

  • サクラエディタのマクロファイルは[SJIS][CR+LF]で[command-prompt-escape.mac]などのファイル名で[C:\Users%USERNAME%\AppData\sakura]に保存する。
  • [SJIS]を採用するのは、[かな][カナ][漢字]などの2バイト文字を置換できるようにするための必須条件である。
S_ReplaceAll('[\r\n]+', '\n', 148);

S_ReplaceAll('(\n|\r\n|\r)' , '\n', 44);


S_ReplaceAll('\x{2B06}[\x{FE0E}\x{FE0F}]?', '\x{2191}', 44)  // 上矢印変換
S_ReplaceAll('\x{2197}[\x{FE0E}\x{FE0F}]?', '\x{2197}', 44)  // 右上矢印変換
S_ReplaceAll('\x{27A1}[\x{FE0E}\x{FE0F}]?', '\x{2192}', 44)  // 右矢印変換
S_ReplaceAll('\x{2198}[\x{FE0E}\x{FE0F}]?', '\x{2198}', 44)  // 右下矢印変換
S_ReplaceAll('\x{2B07}[\x{FE0E}\x{FE0F}]?', '\x{2193}', 44)  // 下矢印変換
S_ReplaceAll('\x{2199}[\x{FE0E}\x{FE0F}]?', '\x{2199}', 44)  // 左下矢印変換
S_ReplaceAll('\x{2B05}[\x{FE0E}\x{FE0F}]?', '\x{2190}', 44)  // 左矢印変換
S_ReplaceAll('\x{2196}[\x{FE0E}\x{FE0F}]?', '\x{2196}', 44)  // 左上矢印変換
S_ReplaceAll('\x{2195}[\x{FE0E}\x{FE0F}]?', '\x{2195}', 44)  // 上下矢印変換
S_ReplaceAll('\x{2194}[\x{FE0E}\x{FE0F}]?', '\x{2194}', 44)  // 左右矢印変換
S_ReplaceAll('\x{21A9}[\x{FE0E}\x{FE0F}]?', '\x{21A9}', 44)  // 左回転矢印変換
S_ReplaceAll('\x{21AA}[\x{FE0E}\x{FE0F}]?', '\x{21AA}', 44)  // 右回転矢印変換
S_ReplaceAll('\x{2934}[\x{FE0E}\x{FE0F}]?', '\x{2934}', 44)  // 上曲線矢印変換
S_ReplaceAll('\x{2935}[\x{FE0E}\x{FE0F}]?', '\x{2935}', 44)  // 下曲線矢印変換

S_ReplaceAll('\x{2795}[\x{FE0E}\x{FE0F}]?', '\x{002B}', 44)  // 加算記号変換
S_ReplaceAll('\x{2796}[\x{FE0E}\x{FE0F}]?', '\x{002D}', 44)  // 減算記号変換
S_ReplaceAll('\x{2797}[\x{FE0E}\x{FE0F}]?', '\x{00F7}', 44)  // 除算記号変換
S_ReplaceAll('\x{2753}[\x{FE0E}\x{FE0F}]?', '\x{003F}', 44)  // 赤疑問符変換
S_ReplaceAll('\x{2754}[\x{FE0E}\x{FE0F}]?', '\x{003F}', 44)  // 白疑問符変換
S_ReplaceAll('\x{2755}[\x{FE0E}\x{FE0F}]?', '\x{0021}', 44)  // 白感嘆符変換
S_ReplaceAll('\x{2757}[\x{FE0E}\x{FE0F}]?', '\x{0021}', 44)  // 赤感嘆符変換
S_ReplaceAll('\x{2B55}[\x{FE0E}\x{FE0F}]?', '\x{25CB}', 44)  // 太丸変換
S_ReplaceAll('\x{274C}[\x{FE0E}\x{FE0F}]?', '\x{00D7}', 44)  // バツ印変換
S_ReplaceAll('\x{274E}[\x{FE0E}\x{FE0F}]?', '\x{2716}', 44)  // 角バツ変換
S_ReplaceAll('\x{2716}[\x{FE0E}\x{FE0F}]?', '\x{00D7}', 44)  // 乗算記号変換
S_ReplaceAll('\x{203C}[\x{FE0E}\x{FE0F}]?', '\x{203C}', 44)  // 二重感嘆符変換
S_ReplaceAll('\x{2049}[\x{FE0E}\x{FE0F}]?', '\x{2049}', 44)  // 感嘆疑問符変換


//完了
S_ReplaceAll('^[\r\n]+', '', 44);
S_ReplaceAll('[\n]+', '\r\n', 44);
S_ReDraw(0);
S_SelectAll(0);
S_Copy(0);


コマンドプロンプトで["][<][>][&][|]は[^]でエスケープする|[%]は[%%]としてエスケープする

  • サクラエディタのマクロファイルは[SJIS][CR+LF]で[command-prompt-escape.mac]などのファイル名で[C:\Users%USERNAME%\AppData\sakura]に保存する。
  • [SJIS]を採用するのは、[かな][カナ][漢字]などの2バイト文字を置換できるようにするための必須条件である。
//コマンドプロンプトの記号をエスケープする
S_ReplaceAll('[\r\n]+', '\n', 148);

S_ReplaceAll('"', '^"', 42); 
S_ReplaceAll('<', '^<', 42); 
S_ReplaceAll('>', '^>', 42); 
S_ReplaceAll('&', '^&', 42); 
S_ReplaceAll('|', '^|', 42); 
S_ReplaceAll('%', '%%', 42); 

//完了
S_ReplaceAll('^(?!■).+$', '', 44);
S_ReplaceAll('^[\r\n]+', '', 44);
S_ReplaceAll('[\n]+', '\r\n', 44);
S_ReDraw(0);
S_SelectAll(0);
S_Copy(0);


正規表現にかんして[(][)][[][]][<][>][?][|]を[¥]でエスケープする

  • サクラエディタのマクロファイルは[SJIS][CR+LF]で[command-prompt-escape.mac]などのファイル名で[C:\Users%USERNAME%\AppData\sakura]に保存する。
  • [SJIS]を採用するのは、[かな][カナ][漢字]などの2バイト文字を置換できるようにするための必須条件である。
//正規表現の記号をエスケープする
S_ReplaceAll('[\r\n]+', '\n', 148);

S_ReplaceAll('(', '\(', 42);
S_ReplaceAll(')', '\)', 42);
S_ReplaceAll('[', '\[', 42);
S_ReplaceAll(']', '\]', 42);
S_ReplaceAll('<', '\<', 42);
S_ReplaceAll('>', '\>', 42);
S_ReplaceAll('?', '\?', 42);
S_ReplaceAll('|', '\|', 42);



//完了
//S_ReplaceAll('^(?!■).+$', '', 44);
S_ReplaceAll('^[\r\n]+', '', 44);
S_ReplaceAll('[\n]+', '\r\n', 44);
S_ReDraw(0);
S_SelectAll(0);
S_Copy(0);