テキストファイルを1行ずつクリップボードにコピー
ウェブブラウザで動作します。テキストファイルを読み込むと1行ごとにコピーボタンが作成されクリックするとクリップボードにコピーできます。半自動化?
たとえばファイルのリネームとか一括でしてくれるソフトはありますし、同じようなことをはるかに便利にコピーできるソフトもあると思いますが、ブラウザで実行できたら便利だと思い作りました。
・対応しているファイル形式はUTF-8です。読み込んだファイルが文字化けしてしまう場合はフォーマットがUTF-8でない可能性があります。たとえばWindowsのメモ帳だと「ファイルを保存」するときにANSIとかShift-JISになっている部分ををUTF-8に変更してください。。
・別のファイルを選択するときはリセットのためページの再読み込みをしてください。
以下のソースをコピーしてhtmlファイルとして保存してください。
<html lang="ja">
<head>
<meta charset="UTF-8">
<title> テキストファイルを1行ずつコピーする </title>
</head>
<body>
<form name="test">
<input type="file" id="file" >
<input type="button" id="reset" value="注意書き" onclick=showNotes()>
<input type="button" id="reset" value="リセット" onclick=location.reload()>
<div id = "output"> </div> <!--テキストとコピーボタンを表示するためのエリア-->
</form>
<!---------------- プログラム部分はここから ---------------->
<script>
//ファイルの中身を1行毎に収めた配列(グローバル)
var arrayOfContents;
//ファイルが選択されたら一連の関数を呼び出す
document.getElementById("file").addEventListener('change',readFile,false);
//ファイルを読み込んで処理を始める
function readFile(evt){
var f = evt.target.files;
var contents;
var reader = new FileReader();
reader.readAsText(f[0]);
//ファイルが読み込まれたら
reader.addEventListener("load",function(){
contents = reader.result;
//ファイルの中身を改行文字で区切る
arrayOfContents = contents.split(/\r\n|\r|\n/);
makeFields();
addEvents();
},false);
}
//テキストフィールドとコピー用のボタンを作る関数
function makeFields() {
var output = document.getElementById('output');
// リスト要素の作成
var p = document.createElement('p');
p.id = 'form';
var i;
var len = arrayOfContents.length;
for ( i=0; i < len; i++) {
//テキストフィールドの作成
var text = document.createElement("input");
text.type = 'text';
text.id = 'text_' + i;
text.value = arrayOfContents[i];
p.appendChild(text);
// ボタンの作成
var input = document.createElement('input');
input.type = 'button';
input.id = 'btn_' + i;
input.className = "btn";
input.value = (i+1) + "行目をコピー";
p.appendChild(input);
var br = document.createElement("br");
p.appendChild(br);
}
output.appendChild(p);
}
//隣のテキストをクリップボードにコピーする関数
function copyText(n){
document.getElementById("text_" + n ).select();
document.execCommand("copy");
}
//イベントの設定
function addEvents(){
var buttons = document.getElementsByClassName("btn");
var len = arrayOfContents.length;
for (var j = 0; j < len; j++) (function(n) {
buttons[n].addEventListener('click', function() {
copyText(n);
}, false);
})(j);
}
//注意書きを表示
function showNotes(){
var notes = '使用上の注意・ファイルはUTF-8形式に変更してから使ってください';
alert(notes);
}
</script>
<!---------------- プログラム部分はここまで ---------------->
</body>
<html>
```