クリップボードの内容をファイルに追記するバッチファイル〔ただしUTF-8 BOMあり〕

  • 以下のコードを[拡張子:.bat]の任意のファイル名かつ[文字:SJIS][改行:CR+LF]で保存する。
  • 適宜、キーボードショートカットを設定し、プログラマブルキーボードなどに登録する。
powershell -Command Add-Content -Path C:\Users\%USERNAME%\Desktop\記述\mainichi-everyday.txt -Value (Get-Clipboard)
"C:\Program Files\WZ EDITOR 10\wzeditor.exe" C:\Users\%USERNAME%\Desktop\記述\mainichi-everyday.txt
"C:\Program Files (x86)\sakura\sakura.exe" C:\Users\%USERNAME%\Desktop\記述\mainichi-everyday.txt
exit
  • 1行目は、クリップボードの内容をmainichi-everyday.txtに追記する〔上書きではない〕、という内容。
  • 2行目は、mainichi-everyday.txtをWZ EDITORで開く、という内容。2行目は、なくてもよい。
  • 3行目は、mainichi-everyday.txtをサクラエディタで開く、という内容。3行目は、なくてもよい。 このmainichi-everyday.txtは[拡張子:.txt]かつ[文字:UTF-8 BOMあり][改行:CR+LF]で保存してある。 PowerShell〔パワーシェル〕でクリップボードを操作した結果であるデータは、強制的に[UTF-8 BOMあり]にされてしまうため、クリップボードのデータを受けるmainichi-everyday.txtは[UTF-8 BOMあり]である必要があり、そうでなければ、文字化けしてしまう。
  • [文字:UTF-8 BOMなし]にしようと、いろいろ工夫しようとしたけれども、諦めた。 Microsoftは、[UTF-8 BOMあり]をごり押ししたいらしい。

CSVファイル〔データベースのもと〕をテキストファイル等に追記していくHTML

【出所】:■HTML5のtableタグをCSV出力(ダウンロード)してみる - Qiita

以上のサイトのソースコードを、環境に合わせて改変しています。 以下のコードを[拡張子:.html]の任意のファイル名かつ[文字:UTF-8 BOMなし][改行:CR+LF]で保存します。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <style type="text/css">
        @charset "UTF-8";
        /* ========BASIC======== */
        html {
        overflow-y:scroll;
        }

        body {
        margin:0;
        padding:0;
        line-height:1.6;
        letter-spacing:1px;
        font-family:Verdana, Helvetica, sans-serif;
        font-size:12px;
        color:#333;
        background:#fff;
        }

        br {
        letter-spacing:normal;
        }

        a {
        color:#0089a1;
        text-decoration:none;
        }

        a:hover {
        color:#0089a1;
        text-decoration:underline;
        }

        img {
        border:0;
        vertical-align:bottom;
        }

        h1,h2,h3,h4,h5,h6 {
        margin:0;
        }


        /* ========TEMPLATE LAYOUT======== */
        #top {
        width:780px;
        margin:10px auto;
        border:1px solid #333;
        }

        #header {
        width:780px;
        }

        #contents {
        clear:both;
        }

        #main {
        float:left;
        width:540px;
        padding:10px;
        }


        /* ========HEADER CUSTOMIZE======== */
        #header h1 {
        margin:0;
        padding:10px;
        font-size:24px;
        }

        #header h1 a {
        color:#333;
        }


        /* ========MAIN CONTENTS CUSTOMIZE======== */
        #main h2 {
        margin-bottom:5px;
        padding:5px 0;
        font-size:16px;
        border-bottom:3px double #ccc;
        }

        #main h3 {
        margin-bottom:5px;
        padding:5px;
        font-size:14px;
        border-left:5px solid #0089a1;
        border-bottom:1px dotted #ccc;
        }

        #main h4 {
        margin-bottom:5px;
        padding:5px;
        font-size:13px;
        color:#fff;
        background:#0089a1;
        }

        #main h5 {
        margin-bottom:5px;
        font-size:13px;
        border-bottom:1px dotted #ccc;
        }

        #main h6 {
        margin-bottom:5px;
        font-size:13px;
        }


        #main p {
        margin:0 0 1em 0;
        }


        /* INFORMATION CUSTOMIZE */
        * html body #main dl.information dd div {
        display:inline-block;
        }

        #main table {
        width:100%;
        border-collapse:collapse;
        }

        #main table th {
        padding:5px;
        font-size:12px;
        text-align:left;
        border:1px solid #aaa;
        background:#f0f7fc;
        }

        #main table td {
        padding:5px;
        font-size:12px;
        text-align:left;
        border:1px solid #aaa;
        }
    </style>

    <title>デモ用アプリ</title>
    </head>
    <body>
        <div id="top">
            <div id="header">
                <h1>データ加工商会</h1>
            </div>
        <div id="contents">
<!--             <div id="main" style="width: 760px;"> -->
            <div id="main" style="width: 760px">
              <h2>csvファイル入力|ダウンロード</h2>
              <h4>日々のデータ蓄積</h4>
                <div style="padding-top: 10px; width: 250px">
                    <h5>▼入力フィールド▼</h5>
                    <input name="table1_cell_value" id="th_value1" type="text" value="表題" placeholder="表題" onfocus="this.select();">
                    <input name="table1_cell_value" id="th_value2" type="text" value="本文" placeholder="本文" onfocus="this.select();">
                    <input name="table1_cell_value" id="th_value3" type="text" value="連絡先" placeholder="連絡先" onfocus="this.select();">
                    <input name="table1_cell_value" id="th_value4" type="text" value="備考" placeholder="備考" onfocus="this.select();">
                    <input type="button" value="行を追加" onclick="add_line()">
                    <b><a id="download" href="#" download="Cu3gHVXB.csv" onclick="handleDownload()">csvファイルダウンロード</a></b>
                </div>
                <table id="table1"  border="1" cellpadding="10">
                    <tr>
                        <th></th>
                        <th></th>
                        <th></th>
                        <th></th>
                    </tr>
                </table>
            </div>
        </div>

  <script>
    //ここから表の行追加のコード
    function add_line() {
        for(var i = 0; i < document.getElementsByName("table1_cell_value").length; i++){
            if(document.getElementsByName("table1_cell_value")[i].value ==""){
                alert("未入力項目があります。");
                return false;
            }
        }

        var table = document.getElementById('table1');//id=table1という要素を取得
        var row = table.insertRow(-1);//id=table1の中にtrタグを最後の子要素として追加
        var cells = new Array();
        for(var i = 0; i < table.rows[0].cells.length; i++){
            cells[i] = row.insertCell(-1);//新しく作ったrowの中にtrタグを最後の子要素として追加
            cells[i].innerText=document.getElementsByName("table1_cell_value")[i].value;
            document.getElementsByName("table1_cell_value")[i].value="";//入力フィールドの初期化
        }
    }
    //ここまで表の列追加のコード

    //ここからCSV出力&ダウンロード
    function handleDownload() {
        var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);//文字コードをBOM付きUTF-8に指定
        var table = document.getElementById('table1');//id=table1という要素を取得
        var data_csv="";//ここに文字データとして値を格納していく

        for(var i = 0;  i < table.rows.length; i++){
          for(var j = 0; j < table.rows[i].cells.length; j++){
            data_csv += table.rows[i].cells[j].innerText;//HTML中の表のセル値をdata_csvに格納
            if(j == table.rows[i].cells.length-1) data_csv += "\r\n";//行終わりに改行コードを追加
            else data_csv += ",";//セル値の区切り文字として,を追加
          }
        }

        var blob = new Blob([ bom, data_csv], { "type" : "text/csv" });//data_csvのデータをcsvとしてダウンロードする関数
        if (window.navigator.msSaveBlob) { //IEの場合の処理
            window.navigator.msSaveBlob(blob, "Cu3gHVXB.csv"); 
            //window.navigator.msSaveOrOpenBlob(blob, "Cu3gHVXB.csv");// msSaveOrOpenBlobの場合はファイルを保存せずに開ける
        } else {
            document.getElementById("download").href = window.URL.createObjectURL(blob);
        }

        delete data_csv;//data_csvオブジェクトはもういらないので消去してメモリを開放
    }
    //ここまでCSV出力&ダウンロード
</script>
  </body>
</html>

CSVファイル〔データベースのもと〕をテキストファイル等に追記していくバッチファイル

以下のコードを[拡張子:.bat]の任意のファイル名かつ[文字:SJIS][改行:CR+LF]で保存する。 [文字:UTF-8 BOMあり]であるmainichi-everyday.txtに追記しても大丈夫でした。

cd C:\Users\%USERNAME%\Downloads
copy Cu3gHVXB*.csv 総合CSV.csv
del Cu3gHVXB*.csv
type C:\Users\%USERNAME%\Downloads\総合CSV.csv >> C:\Users\%USERNAME%\Desktop\記述\mainichi-everyday.txt
del 総合CSV.csv
"C:\Program Files\WZ EDITOR 10\wzeditor.exe" C:\Users\%USERNAME%\Desktop\記述\mainichi-everyday.txt
exit