トップページ > プログラム > 2014年05月12日 > lu6e4KQq

書き込み順位&時間帯一覧

15 位/256 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000002010104



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【.cmd】 バッチファイルスクリプト %10 【.bat】

書き込みレス一覧

【.cmd】 バッチファイルスクリプト %10 【.bat】
511 :デフォルトの名無しさん[sage]:2014/05/12(月) 18:35:18.01 ID:lu6e4KQq
>>506
@if (0)==(0) echo off
cscript.exe //nologo //e:jscript "%~f0" %*
goto :EOF
@end

var sh = new ActiveXObject( "WScript.Shell" );
var fs = new ActiveXObject( "Scripting.FileSystemObject" );
var arg = WScript.arguments;
if (arg.length != 1) {
WScript.echo("引数1にフォルダ名を指定してください");
WScript.quit(0);
}
if (fs.FolderExists(arg(0))==false) {
WScript.echo("フォルダが存在していません");
WScript.quit(0);
}
sh.CurrentDirectory = arg(0);
var folder = fs.GetFolder( "." );
var em = new Enumerator( folder.Files );
for( em.moveFirst(); !em.atEnd(); em.moveNext() ) {
if (em.item().Name.match(/^([^_.]+)\.mp4$/,"i")) {
var id=RegExp.$1;
var title=GetYoutubeTitle(id);
if(title!="YouTube") { //video not existの簡易判定
var file=fs.GetFile(em.item().Name);
file.name=id+"_"+title+".mp4"; //対象ファイルをyoutubeID_title.mp4にリネーム
WScript.Echo("rename - "+em.item().Name+" --> "+file.name);
} else {WScript.Echo("skip - "+em.item().Name);}
} else {WScript.Echo("skip - "+em.item().Name); continue;}
}
【.cmd】 バッチファイルスクリプト %10 【.bat】
512 :デフォルトの名無しさん[sage]:2014/05/12(月) 18:35:50.65 ID:lu6e4KQq
fs = null;
sh = null;

function GetYoutubeTitle(Id) {
var http = WScript.CreateObject("Msxml2.XMLHTTP");
http.Open("GET", "http://www.youtube.com/watch?v="+Id, false);
http.Send(); // 送信
var re = new RegExp("<title>(.*?)</title>","i");
http.responseText.match(re);
return RegExp.$1;
}
【.cmd】 バッチファイルスクリプト %10 【.bat】
513 :デフォルトの名無しさん[sage]:2014/05/12(月) 20:30:00.12 ID:lu6e4KQq
●23行目
var title=GetYoutubeTitle(id);

var title=CnvFName(GetYoutubeTitle(id));

●関数追加
//ファイル名として使用できない文字を全角文字に置換する
function CnvFName(s) {
var invalid_chars = {'<':'<','>':'>','*':'*', '"':'”', '?':'?', '\\':'¥', '/':'/', '|':'|', ':':':' };
return s.replace(/[|:/<>*"?\\]/g, function (w){return invalid_chars[w];});
}

●備考
リネーム後のファイルが再び対象となることがあるが、これを避けたいのなら
一旦フォルダ内のファイル一覧を配列に取り、それをループさせる。
また、ファイル名の文字数チェック(255文字)も必要なら追加。
【.cmd】 バッチファイルスクリプト %10 【.bat】
517 :デフォルトの名無しさん[sage]:2014/05/12(月) 22:09:46.97 ID:lu6e4KQq
●mp4以外にflvにも対応させるには、21行目から27行目までを以下に置換
if (em.item().Name.match(/^([^_.]+)\.(mp4|flv)$/,"i")) {
var id=RegExp.$1;
var oldname=em.item().Name;
var ext=RegExp.$2;
var title=CnvFName(GetYoutubeTitle(id));
if(title!="YouTube") { //video not existの簡易判定
var file=fs.GetFile(em.item().Name);
file.name=id+"_"+title+"."+ext; //対象ファイルをyoutubeID_title.mp4にリネーム
WScript.Echo("rename - "+oldname+" --> "+file.name);

●また、念のためにfunction GetYoutubeTitleのreturn文の上に
http=null;
を挿入しとくと精神的に良いかと


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。