Skip to content

Instantly share code, notes, and snippets.

@saitamanodoruji
Created December 17, 2011 18:20
Show Gist options
  • Save saitamanodoruji/1490949 to your computer and use it in GitHub Desktop.
Save saitamanodoruji/1490949 to your computer and use it in GitHub Desktop.
.jpg mabiku JScript
// usage:
// >cscript mabiku.js DENOMINATOR [SOURCE DESTINATION]
// Echo を使いやすく
function echo(m) {WScript.Echo(m);}
// 引数を使いやすく
var args = [];
for (var i = 0; i < WScript.arguments.length; i++) {
args.push(WScript.arguments(i));
}
// 引数無いときはエラーで終了
if (args.length == 0) {
echo('エラー: 少なくとも 1 つ引数をください(割る数).');
} else {
// ファイル操作とかするオブジェクトを作る
var fso = new ActiveXObject('Scripting.FileSystemObject');
var app = new ActiveXObject('Shell.Application');
var shell = new ActiveXObject('WScript.Shell');
// 引数が足りないときの補完
if (args.length == 1) args.push(shell.CurrentDirectory);
if (args.length == 2) args.push(args[1] + '\\copied');
if (args.length > 3) echo('警告: 引数多すぎ.4 つめ以降は無視する.');
// コピー元の .jpg を数える
var items = app.NameSpace(args[1]).Items();
var names = [];
for (var n = 0, i = 0; i < items.Count; i++) {
if (items.Item(i).Name.match(/\.jpg$/)) {
names.push(items.Item(i).Name);
n++;
}
}
echo('mabiku.js: ディレクトリ ' + args[1] + ' にある .jpg の数は ' + n + ' 個');
// コピー実行
// コピー先フォルダがなかったらコピー元に copied フォルダを作ってそこにコピーする
// コピー先にすでにファイルがあったらどうなるかとかはよく調べてない
if (!fso.FolderExists(args[2])) {
fso.CreateFolder(args[2]);
}
for (var m = 0, i = 0; i < n; i++) {
if (i % args[0] == 0) {
fso.CopyFile(args[1] + '\\' + names[i], args[2] + '\\' + names[i]);
m++;
}
}
echo('mabiku.js: ' + n + ' 個のファイルのうち ' + m + ' 個を ' + args[2] + ' にコピーした');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment