- 【.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; を挿入しとくと精神的に良いかと
|
|