起動画面

最上段のエリアにフォルダをドラッグ&ドロップすると

フォルダの中身のリストが最下段のテキストエリアに表示されます。

ファイル名や拡張子を複数の条件(~を含む、~で始まる、~で終わる、~と一致する)で絞り込むこともできます。

フルパス表示も可能

以下ソース
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<title>フォルダ内ファイルリスト取得</title> | |
<style type="text/css"> | |
.max{width:100%;height:100%} | |
.w-max{width:100%} | |
.bc{border-collapse:collapse} | |
.nowrap{white-space:nowrap} | |
</style> | |
</head> | |
<body> | |
<table class=max> | |
<tr><td><iframe name=ifrName id=ifr class=max style="border:solid 1px #000;"></iframe></td></tr> | |
<tr height=1><td><button id=btn>cls</button></td></tr> | |
<tr height=1> | |
<td> | |
<table class="bc w-max" border=1> | |
<tr> | |
<td width=1><span class=nowrap>ファイル名</span></td> | |
<td><input id=inp0 class=w-max></td> | |
<td width=1><select id=sel0></select></td> | |
</tr> | |
<tr> | |
<td width=1><span class=nowrap>拡張子</span></td> | |
<td><input id=inp1 class=w-max></td> | |
<td width=1><select id=sel1></select></td> | |
</tr> | |
<tr> | |
<td width=1><span class=nowrap>種類</span></td> | |
<td colSpan=2><select id=sel種類 class=w-max></select></td> | |
</tr> | |
<tr> | |
<td width=1><span class=nowrap>表示</span></td> | |
<td colSpan=2><select id=sel表示 class=w-max></select></td> | |
</tr> | |
</table> | |
</td> | |
</tr> | |
<tr height=1><td><textarea id=ta wrap=off class=w-max style="height:70px"></textarea></td></tr> | |
</table> | |
</body> | |
<script> | |
resizeTo(400,350) | |
onload = function(){ | |
btn.onclick() | |
var f=function(sel){ | |
var ops=sel[OP], i=0 | |
ops[i++] = new Option('を含む') | |
ops[i++] = new Option('で始まる') | |
ops[i++] = new Option('で終わる') | |
ops[i++] = new Option('と一致する') | |
} | |
f(sel0) | |
f(sel1) | |
var ops=sel種類[OP], i=0 | |
ops[i++] = new Option('ファイル') | |
ops[i++] = new Option('フォルダ') | |
var ops=sel表示[OP], i=0 | |
ops[i++] = new Option('名前のみ') | |
ops[i++] = new Option('フルパス') | |
} | |
pathIFR = '' | |
btn.onclick = function(){ | |
var ifr_=document.getElementById('ifr'), sw初期化, swロック | |
ifr_.onreadystatechange=function(){ | |
if(swロック || this.readyState!='complete'){return} | |
if(sw初期化){ | |
var doc=ifr_.contentWindow.document | |
swロック = true | |
doc.open() | |
doc.write('ここにフォルダをドラッグ&ドロップしてください') | |
doc.close() | |
return sw初期化 = swロック = false | |
} | |
pathIFR = decodeURI((ifr.location+'').replace(/^file:/,'').replace(/^\/+(\w:)/,'$1')) | |
td更新() | |
ifr初期化() | |
} | |
var ifr初期化=function(){ | |
sw初期化 = true | |
ifr.location = 'about:blank' | |
} | |
ifr初期化() | |
pathIFR = '' | |
inp0.value=inp1.value='' | |
ta.value = '' | |
} | |
sel0.onchange=sel1.onchange=sel種類.onchange=sel表示.onchange=inp0.onkeyup=inp1.onkeyup=td更新=function(){ | |
ta.value = '' | |
if(!pathIFR){return alert('フォルダPathが取得できませんでした')} | |
pathIFR = pathIFR.replace(/\//g,'\\').replace(/\\$/,'')+'\\' | |
var f=function(sel, inp){ | |
var str=inp.value | |
switch(sel[sI]){ | |
case 0:return str ? ('*'+str+'*') : '*' | |
case 1:return str + '*' | |
case 2:return '*' + str | |
case 3:return str | |
} | |
}, name=f(sel0, inp0), ext=f(sel1, inp1), arr=getDir(pathIFR+name+'.'+ext, sel種類[sI]==0) | |
if(sel表示[sI]==1){ for(var i=0,L=arr.length;i<L;i++){ arr[i] = pathIFR+arr[i] } } | |
ta.value = arr.join('\n') | |
} | |
sI='selectedIndex', OP='options' | |
getDir = function(path, swFile){ | |
path = path.indexOf(' ') ? ('"'+path+'"') : path | |
var obj=(new ActiveXObject('WScript.Shell')).exec('cmd /C dir /A'+(swFile?'-':'')+'D /B '+path), arr=obj.StdOut.ReadAll().split('\r\n') | |
arr.pop() | |
return arr | |
} | |
</script> | |
</html> |
0 件のコメント:
コメントを投稿