主な機能
- 動画ファイルの再生時間を取得する。
- サブフォルダも含めたフォルダ内の全ての動画ファイルの再生時間を取得する。
- logファイルに出力する。
try {
var main = new main(WScript.Arguments);
main.exec();
}
catch(e) {
WScript.echo(e);
WScript.Quit();
}
function main (_args) {
// Windows Media Playerコントロールオブジェクト生成
this.objWMP = WScript.createObject("WMPlayer.OCX");
// FileSystemObject生成
this.objFileSys = WScript.CreateObject("Scripting.FileSystemObject");
// ShellObject生成
this.objShell = WScript.createObject("WScript.Shell");
// 引数の取得
this.objArgs = _args;
if (this.objArgs.UnNamed.count <= 0) {
throw "ファイル叉はフォルダをドラッグ&ドロップするか\nコマンドラインから引数としてファイル又はフォルダパスを指定してください。";
}
//---------------------------------
// exec()
//---------------------------------
this.exec = function() {
// logファイルの生成(上書きモード)
var logFileName = "PlayTimeLog.txt";
var objLogFile = this.objFileSys.OpenTextFile(logFileName, 2, true);
var fileCnt = 0;
// 全ての名前なし引数について処理する
var unNamedArgs = this.objArgs.UnNamed;
var enu = new Enumerator(unNamedArgs);
for (; enu.atEnd() == false; enu.moveNext()) {
try {
var arg = enu.item();
fileCnt = this.logPlayTime(objLogFile, arg);
}
catch(e) {
objLogFile.WriteLine(e);
}
}
// サマリー情報の書き込み
objLogFile.WriteLine("----------------------------------------");
objLogFile.WriteLine(fileCnt + "件のファイルを処理しました。");
// logファイルのクローズ
objLogFile.Close();
// 完了メッセーの表示
WScript.echo(
"mission completed\n"
+ "作業結果は\n"
+ this.objShell.CurrentDirectory
+ "\\" + logFileName + "\n"
+ "参照"
);
}
//---------------------------------
// サブフォルダも含めて動画ファイルの再生時間をlogファイルに書き込む
//---------------------------------
this.logPlayTime = function (_objLogFile, _path) {
var fileCnt = 0;
// パスがフォルダの場合
if (this.objFileSys.FolderExists(_path)) {
// フォルダオブジェクトの生成
var objFolder = this.objFileSys.GetFolder(_path);
// サブフォルダ一覧取得
var subFolders = objFolder.SubFolders;
// 全てのフォルダについて自分を呼び出す
var enuSubFolders = new Enumerator(subFolders);
for (;enuSubFolders.atEnd() == false; enuSubFolders.moveNext()) {
fileCnt += this.logPlayTime(_objLogFile, enuSubFolders.item().Path);
}
// ファイル一覧取得
var files = objFolder.Files
// 全てのファイルについて自分を呼び出す
var enuFiles = new Enumerator(files);
for (; enuFiles.atEnd() == false; enuFiles.moveNext()) {
fileCnt += this.logPlayTime(_objLogFile, enuFiles.item().Path);
}
}
// パスがファイルの場合
else if (this.objFileSys.FileExists(_path)) {
// ファイルオブジェクトの生成
var objFile = this.objFileSys.GetFile(_path);
// 再生時間の取得
var time = this.getPlayTime(objFile.Path);
// logファイルに書き込み
_objLogFile.WriteLine(objFile.Name + "\t" + time);
// ファイル数をインクリメント
fileCnt++;
}
else {
objLogFile.WriteLine("error:" + _path + "は存在しません");
}
return fileCnt;
}
//---------------------------------
// 動画再生時間の取得
//---------------------------------
this.getPlayTime = function(_filePath) {
// 動画ファイルの読み込み
this.objWMP.URL = _filePath;
// ファイル準備中状態の間待つ
while (this.objWMP.playState == 9) {
WScript.Sleep(500);
}
// 再生時間取得
return this.objWMP.currentMedia.durationString;
}
}
ソースコード長いw
0 件のコメント:
コメントを投稿