![]() |
|
|||||||
| 論壇說明 |
|
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
![]() |
|
|
主題工具 | 顯示模式 |
|
|
|
|
#3 (permalink) |
|
長老會員
![]() |
我做了一些修改, 已經可以查子目錄了, 也可以直接執行點選找到的檔案... 另外, 關於安全性的問題, 那是微軟搞的...無解 語法:
<HTML lang=zh-TW>
<HEAD>
<TITLE>本機 檔案搜尋</TITLE>
<META http-equiv=Content-Type content="text/html; charset=big5">
</HEAD>
<style>
.Field {color: black; border: 1px solid #FFFFFF; background-color: #FFCC00;}
.Find {color:blue; font: 12px Arial;}
</style>
<script>
var Fo =new ActiveXObject("Scripting.FileSystemObject");
var StrOut = new String();
var FileName = new String();
var Extention = new String();
var LimitFilesByDirectory = 100; //1個目錄內最多要檢查的檔案數...
var LimitFoldersByDirectory = 10; //1個目錄內最多要檢查的子目錄數...
function FindFile(FOo)
{
cwvdavid_fileRead = new ActiveXObject("Scripting.FileSystemObject");
var FSo = new Enumerator(FOo.Files); //取得 該目錄下的所有檔案...
var subFOo = new Enumerator(FOo.SubFolders); //取得該目錄下的所有目錄...
for(i=0;!FSo.atEnd();FSo.moveNext())
{
if(FileName == "*" || FSo.item().name.slice(0,FSo.item().name.lastIndexOf(".")).toLowerCase().indexOf(FileName)>-1)
{
if(Extention == "*" || FSo.item().name.slice(FSo.item().name.lastIndexOf(".")+1).toLowerCase().indexOf(Extention)>-1)
{
hasWord = "[x]";
//把找到的檔案列出來...
//路徑的尾巴要加\, 不然找不到
mypath = FOo.Path;
//檢查mypath的尾巴是否有\, 如果沒有就加上去...
if(mypath.lastIndexOf("\\")+1 != mypath.length)
{
mypath = mypath + "\\";
}
ts = cwvdavid_fileRead.OpenTextFile(mypath + FSo.item().name, 1);
myReadWord = ts.ReadAll();
if(myReadWord.indexOf(searchWord.value) != -1)
{
//如果有找到文字...就列出該檔案
StrOut += "<tr "+ ((i%2)? "":"bgcolor=#DDAA55") +"><td width=20%><font class=find>" + FOo.Path + "</font></td><td width=30%><font class=find><a target=\"_blank\" href=\"" + mypath + FSo.item().name + "\">" + FSo.item().name + "</a></font></td><td width=25%><font class=find>" + FSo.item().type + "</font></td><td width=50%><font class=find>"+ String(FSo.item().size/(1024*1024)).slice(0,3) +" MB</font></td></tr>";
}
ts.Close();
i++
if(i >= LimitFilesByDirectory) break; //同一層的檔案只找前面 n 個...避免太多...沒完沒了...(尤其是誤選了什麼某個... I386的目錄)
}
}
}
//找完檔案開始找資料夾...
for(i=0;!subFOo.atEnd();subFOo.moveNext())
{
FindFile(Fo.GetFolder(subFOo.item().Path)); //使用遞迴.....
i++;
if(i >= LimitFoldersByDirectory) break; //同一層目錄只找前 n 個子目錄...避免太多...沒完沒了...
}
}
function Scan()
{
FileName = (search.value.lastIndexOf(".")>-1)? search.value.slice(0,search.value.lastIndexOf(".")):(search.value.length>0)? search.value.toLowerCase():"*"; //Get Searched File Name
Extention = (search.value.lastIndexOf(".")>-1)? search.value.slice(search.value.lastIndexOf(".")+1).toLowerCase():"*"; // Get Searched File Extention Name
if(path.value.length>0 && Fo.FolderExists(path.value))
{
StrOut = "<table border=0 width=100% cellspacing=0>"
StrOut += "<tr bgcolor=\"#CCCCCC\"" +"><td width=20%><font class=find>路徑</font></td><td width=30%><font class=find>檔名</font></td><td width=25%><font class=find>檔案類型</font></td><td width=50%><font class=find>檔案大小</font></td></tr>";
outPut.innerHTML = StrOut;
FindFile(Fo.GetFolder(path.value));
outPut.innerHTML = StrOut+"</table>";
}
else alert("錯誤的路徑...");
}
</script>
<BODY topmargin="0" leftmargin="0">
<table border=0 width=100% cellspacing="0" style="border-collapse: collapse" cellpadding="2"><tr>
<td dir="ltr" bgcolor="#FFCC00"><b><font face="Arial" size="2">Named :</font></b></td>
<td dir="ltr" bgcolor="#FFCC00">
<input size=50 type=text id=search name=search class="Field" value="*.html"></td>
</tr><tr>
<td dir="ltr" bgcolor="#FFCC00">
<p dir="ltr"><b><font face="Arial" size="2">Path : </font></b> </td>
<td bgcolor="#FFCC00">
<input size=50 type=text value="C:\testHtml" id=path name=path class="Field" ></td>
</tr><tr>
<td bgcolor="#FFCC00">要找的文字...</td>
<td bgcolor="#FFCC00">
<input size=50 type=text value="文字" id=path0 name=searchWord class="Field" ></td>
</tr><tr>
<td bgcolor="#FFCC00"> </td>
<td bgcolor="#FFCC00">
<input type=button value=" Scan " onclick=Scan() class="Field"></td>
</tr><tr>
<td colspan=2 align=right bgcolor="#FFCC00"><font face=arial size=2><b>Search Result</b></font><hr></td>
</tr><tr>
<td colspan=2 bgcolor="#FFCC00">
<div id=outPut>
</div>
</td>
</tr></table>
</BODY>
</HTML>
|
__________________ 姜太公釣魚~ 願者上鉤
|
|
|
|
送花文章: 4036,
|
|
向 cwvdavid 送花的會員:
|
|
|
#6 (permalink) |
|
註冊會員
|
我試用後已經覺得很不錯了 , 也已經加到我的WEB 中.
我稍有修改畫面, 但是 可否幫我看看這3點 我不會改: 1. "就是沒找完之前, 不會出現結果..." 這一點 可否麻煩大大 當user按 Scan鈕之後 在按鈕旁邊顯示 一個字串 "搜尋中...請稍候" , 若找完後 就清除此字串即可.(這樣子就無缺點了) 2. 請多加一判斷:若找出的 path目錄名稱 的字串最右邊是 "_vti_pvt" 或 "_vti_cnf" 時 因為這是FrontPage 的虛擬目錄 和索引目錄 ( 如圖的最下方) ==>則此筆不列出 在螢幕 ![]() 3.格行換底色問題 :我發覺 當找出許多筆時 顏色有時候不會換 (我指令不熟 不明原因) 如上圖的最下方2列. 語法:
//如果有找到文字...就列出該檔案 StrOut += "<tr "+ ((i%2)? "":"bgcolor=#ffffff") +"><td width=70%><font class=find>" + FOo.Path + "</font></td><td width=30%><font class=find><a target=\"_blank\" href=\"" + mypath + FSo.item().name + "\">" + FSo.item().name + "</a></font></td><td width=20%><font class=find>"+ "</font></td></td></tr>"; 此帖於 2008-06-21 12:31 PM 被 飛行船大大 編輯. |
|
|
送花文章: 185,
|
|
|
#7 (permalink) |
|
長老會員
![]() |
我大幅修改了程式碼, 可以在查詢中看到完全的狀況,
不會再感覺到[當(卡)在那邊]了... 你再試試看 語法:
<HTML lang=zh-TW>
<HEAD>
<TITLE>本機 檔案搜尋</TITLE>
<META http-equiv=Content-Type content="text/html; charset=big5">
</HEAD>
<style>
.Field {color: black; border: 1px solid #FFFFFF; background-color: #FFCC00;}
.Find {color:blue; font: 12px Arial;}
</style>
<script>
var Fo = new ActiveXObject("Scripting.FileSystemObject");
var StrOut = new String();
var FileName = new String();
var Extention = new String();
var TableBarIndex = 0;
var cwvdavid_fileRead = new ActiveXObject("Scripting.FileSystemObject");
var SearchING = false;
var FindDirArray; //要搜尋的全部目錄資料...
var MissDirectory = ["_vti_", "images", "flash"]; //要忽略的目錄的開頭名稱(請寫小寫), 可自行再加入更多...
var myThreading_InterVal;
var commandList = [];
function executeCommands() { if(commandList.length>0) commandList.shift()(); }
function FindFile(FOo)
{
FindDirArray = [];
GetAllDirectory(FOo); //記錄所有要查詢的目錄...
var FOo = Fo.GetFolder(FindDirArray.shift()); //一個目錄一個目錄的執行...
simThread(FOo, null);
}
function GetAllDirectory(FOo)
{
var SearchThisDirectory = true;
var i;
for(i = 0; i<MissDirectory.length; i++)
{
if(FOo.Name.toLowerCase().indexOf(MissDirectory[i]) == 0) //如果這個目錄 要忽略掉...就不記錄
{
SearchThisDirectory = false;
}
}
if(SearchThisDirectory)
{
FindDirArray.push(FOo.path);
var subFOo = new Enumerator(FOo.SubFolders); //取得該目錄下的所有目錄...
for( ; !subFOo.atEnd(); subFOo.moveNext())
{
GetAllDirectory(Fo.GetFolder(subFOo.item().Path)); //使用遞迴.....來取得全部的目錄...
}
}
}
function simThread(FOo, FSo)
{
if(FSo == null)
{
FSo = new Enumerator(FOo.Files);
}
if(!FSo.atEnd()) //還沒到最後一個[檔案]之前...
{
//路徑的尾巴要加\, 不然找不到
mypath = FOo.Path;
//檢查mypath的尾巴是否有\, 如果沒有就加上去...
if(mypath.lastIndexOf("\\")+1 != mypath.length)
{
mypath = mypath + "\\";
}
window.status = "搜尋中... " + mypath + FSo.item().name; //把查詢過程顯示在IE的狀態列
//檢查這個檔案的檔名...看有沒有符合...查詢的條件...
if(FileName == "*" || FSo.item().name.slice(0,FSo.item().name.lastIndexOf(".")).toLowerCase().indexOf(FileName)>-1)
{
if(Extention == "*" || FSo.item().name.slice(FSo.item().name.lastIndexOf(".")+1).toLowerCase().indexOf(Extention)>-1)
{
//把找到的檔案列出來...
ts = cwvdavid_fileRead.OpenTextFile(mypath + FSo.item().name, 1);
myReadWord = ts.ReadAll();
if(myReadWord.indexOf(searchWord.value) != -1)
{
//如果有找到文字...就列出該檔案
NewTR = Result_Table.insertRow(Result_Table.rows.length);
NewTR.style.backgroundColor = ((TableBarIndex % 2)? "#FFFFFF":"#DDAA55");
NewTD = NewTR.insertCell(0);
NewTD.innerHTML = mypath;
NewTD.className = "Find";
NewTD = NewTR.insertCell(1);
NewTD.innerHTML = "<a target=\"_blank\" href=\"" + mypath + FSo.item().name + "\">" + FSo.item().name + "</a>";
NewTD.className = "Find";
NewTD = NewTR.insertCell(2);
NewTD.innerHTML = FSo.item().type;
NewTD.className = "Find";
NewTD = NewTR.insertCell(3);
NewTD.innerHTML = String(FSo.item().size/(1024*1024)).slice(0,3) +" MB";
NewTD.className = "Find";
TableBarIndex++; //列出檔案時, 將變數加1, 以便換顏色...
}
ts.Close();
}
}
FSo.moveNext(); //移到下一個檔案...
commandList.push(function(){simThread(FOo, FSo);});
}
else //找下一個目錄的資料...
{
if(FindDirArray.length>0)
{
simThread(Fo.GetFolder(FindDirArray.shift()), null);
}
else
{
alert("已搜尋完畢...");
mySearchBTN.value = " 開始搜尋 ";
SearchING = false;
clearInterval(myThreading_InterVal);
}
}
}
function Scan()
{
if(SearchING)
{
clearInterval(myThreading_InterVal);
mySearchBTN.value = " 開始搜尋 ";
SearchING = false;
alert("已中斷搜尋...");
}
else
{
myThreading_InterVal = setInterval("executeCommands()",1); //每一毫秒就執行一次...
SearchING = true;
mySearchBTN.value = "(搜尋中...) 立即停止搜尋";
FileName = (search.value.lastIndexOf(".")>-1)? search.value.slice(0,search.value.lastIndexOf(".")):(search.value.length>0)? search.value.toLowerCase():"*"; //Get Searched File Name
Extention = (search.value.lastIndexOf(".")>-1)? search.value.slice(search.value.lastIndexOf(".")+1).toLowerCase():"*"; // Get Searched File Extention Name
TableBarIndex = 0;
if(path.value.length>0 && Fo.FolderExists(path.value))
{
tableRows = Result_Table.rows.length;
for(i=1; i<tableRows; i++) Result_Table.deleteRow(1); //保留標題列, 其他結果清除...
FindFile(Fo.GetFolder(path.value));
}
else
{
alert("錯誤的路徑...");
}
}
}
</script>
<BODY topmargin="0" leftmargin="0">
<table border=0 width=100% cellspacing="0" style="border-collapse: collapse" cellpadding="2"><tr>
<td dir="ltr" bgcolor="#FFCC00"><b><font face="Arial" size="2">Named :</font></b></td>
<td dir="ltr" bgcolor="#FFCC00">
<input size=50 type=text id=search name=search class="Field" value="*.html"></td>
</tr><tr>
<td dir="ltr" bgcolor="#FFCC00">
<p dir="ltr"><b><font face="Arial" size="2">Path : </font></b> </td>
<td bgcolor="#FFCC00">
<input size=50 type=text value="D:\" id=path name=path class="Field" ></td>
</tr><tr>
<td bgcolor="#FFCC00">要找的文字...</td>
<td bgcolor="#FFCC00">
<input size=50 type=text value="文字" id=path0 name=searchWord class="Field" ></td>
</tr><tr>
<td bgcolor="#FFCC00"> </td>
<td bgcolor="#FFCC00">
<input type=button id=mySearchBTN value=" 開始搜尋 " onclick=Scan() class="Field"></td>
</tr><tr>
<td colspan=2 align=right bgcolor="#FFCC00"><font face=arial size=2><b>Search Result</b></font><hr></td>
</tr><tr>
<td colspan=2 bgcolor="#FFCC00">
<div id=outPut>
<table border=0 width=100% cellspacing=0 id="Result_Table">
<tr id="ResultTR1" bgcolor=\"#CCCCCC\"" +"><td class=find width=20%>路徑</td><td class=find width=30%>檔名</td><td class=find width=25%>檔案類型</td><td class=find width=50%>檔案大小</td></tr>
</table>
</div>
</td>
</tr></table>
</BODY>
</HTML>
(呼...寫這種程式會爆肝..... 以後要少碰......) |
|
|
送花文章: 4036,
|
![]() |
|
|
相似的主題
|
||||
| 主題 | 主題作者 | 討論區 | 回覆 | 最後發表 |
| 疑問 - 最近買了一台印表機...有一些疑問! | 180524 | 硬體疑難使用問題討論區 | 17 | 2007-09-17 06:16 PM |
| 請問...我用flashget抓了一部電影.但不知點了裡頭什麼..電影不見了.是否有法子可補救?? | lancolian | 軟體應用問題討論區 | 0 | 2003-07-17 01:58 AM |