« 拡張子MP3のファイルで連番で始まるものの一覧を作成するスクリプト | メイン | javascript連想配列 »

一覧テキストからファイル名を変更するスクリプト

2015年03月13日

一覧テキストからファイル名を変更するスクリプト
[ Tips ]

「拡張子MP3のファイルで連番で始まるものの一覧を作成するスクリプト」と対になる様なスクリプトです。
 01 aaa
 02 bbb
と言った一覧テキストから、実際のファイル名が
 01 xxx.mp3
 02 yyy.mp3
となっているものをテキストに沿ってリネームするためのスクリプトです。
頭に連番を付けて、拡張子はmp3にしておいてください。

一覧テキストを「xxx.txt」とし、mp3のあるフォルダに一覧テキストとこのスクリプトを入れて、スクリプトを実行してください。

だって、アレだよ、文字化けしているんだもん!ってな時に使うためのものです。
JSEスクリプトですので、「xxx.jse」の様に保存してください。


//-------------------------------------------------------------------
// 一覧ファイルによりリネームするプログラム (ファイル名: renameMp3.jse)
//-------------------------------------------------------------------
//定数の宣言
var ForReading = 1; //読み込み
var ForWriting = 2; //書きこみ(上書きモード)
var ForAppending = 8; //書きこみ(追記モード)

// for debug
function debugwrite(tmpstr){
var debugfso = new ActiveXObject("Scripting.FileSystemObject");
var MyFile = fso.OpenTextFile("d:\\debugfile.txt", ForAppending);
MyFile.WriteLine(tmpstr);
MyFile.Close();
}

// 変数の初期化など
var fso = WScript.CreateObject("Scripting.FileSystemObject");

// ファイルを1つずつ処理する
var dir = fso.GetFolder(".");
var files = new Enumerator(dir.Files);
while (files.atEnd() == false) {
var tmpPath = files.item().path;
var tmpStr = tmpPath.substr((tmpPath.length - 3),3);
if ( tmpStr == "txt" ) {
fileRead(tmpPath);
}
files.moveNext();
}


function fileRead(strFilePath){
// ファイルのオープン(読み込みで開く)
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var objInFile = objFileSys.OpenTextFile(strFilePath,ForReading);

// ファイルのオープンが成功(ファイル有り)のときに実行
// ファイルの内容を全部読み終えるまでループ
var i = 1;
do {
// ファイルの内容を1行ずつ読み込む
var strRecord = objInFile.ReadLine();

if ( i < 10 ) {
var trackNo = "0" + i;
} else {
var trackNo = i;
}
var strHead = strRecord.substr(0,2);
var strHead3 = strRecord.substr(2,1);
if ((strHead == trackNo) && (isNaN(strHead3) || strHead3 == " ") ) {
// 読み込んだ内容をコンソールへ表示
if ( strHead3 == " " || strHead3 == "." ) {
var mp3FileName = strRecord.substr(3,(strRecord.length - 3));
} else {
var mp3FileName = strRecord.substr(2,(strRecord.length - 2));
}
mp3FileName = eraseSpace (mp3FileName);
mp3FileName = eraseBackSpace (mp3FileName);
renameMp3(trackNo, mp3FileName);
i++;
}

} while(objInFile.AtEndOfStream==false);
objInFile.Close();
}

function eraseSpace(strFileName) {
if ( strFileName.substr(0,1) == " " ) {
var tmpStr = strFileName.substr(1,(strFileName.length - 1))
var returnStr = eraseSpace(tmpStr);
return returnStr;
} else {
return strFileName;
}
}

function eraseBackSpace(strFileName) {
if ( strFileName.substr(strFileName.length-1,1) == " " ) {
var tmpStr = strFileName.substr(0,(strFileName.length - 1))
var returnStr = eraseBackSpace(tmpStr);
return returnStr;
} else {
return strFileName;
}
}

function renameMp3(trackNo, mp3FileName){
var dir = fso.GetFolder(".");
var files = new Enumerator(dir.Files);
mp3FileName = mp3FileName.replace(/\//g,"/");
mp3FileName = mp3FileName.replace(/\"/g,"”");
mp3FileName = mp3FileName.replace(/\\/g,"¥");
mp3FileName = mp3FileName.replace(/\*/g,"*");
mp3FileName = mp3FileName.replace(/\?/g,"?");
mp3FileName = mp3FileName.replace(/ mp3FileName = mp3FileName.replace(/>/g,">");
mp3FileName = mp3FileName.replace(/:/g,":");
mp3FileName = mp3FileName.replace(/\|/g,"|");
while (files.atEnd() == false) {
var tmpName = files.item().name;
var tmpStr = tmpName.substr(0,2);
if ( tmpStr == trackNo ) {
var newname = files.item().ParentFolder + "\\" + trackNo + "." + mp3FileName + ".mp3";
files.item().Move(newname);
break;
}
files.moveNext();
}
}


Posted by りじんぐ at 06:35

About

2015年03月13日 06:35に投稿されたエントリーのページです。

ひとつ前の投稿は「拡張子MP3のファイルで連番で始まるものの一覧を作成するスクリプト」です。

次の投稿は「javascript連想配列」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type