直接输入路径倒是可以遍历。还有一个问题,就是如果浏览器禁用了activex时,即使输入路径也不能遍历。大家有什么好方法吗?
Index.html文件代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>遍历测试</title>
<script type="text/javascript" src="js/Traverse.js"></script>
<script type="text/javascript">
function browse(){
document.all.getfolder.value=BrowseFolder();
}
function viewfiles(){
var textHtml="";
var folderpath=document.all.getfolder.value;
textarea.innerHTML=traverse(folderpath,textHtml)+"共遍历文件数:"+countfiles+"<br/>"+"共遍历文件夹数:"+countfolders;
}
</script>
</head>
<body>
指定文件夹:<input type="text" name="getfolder">
<input type="button" value="选择文件夹" onclick="browse()">
<input type="button" value="查看文件信息" onclick="viewfiles()">
<div id="textarea">
</div>
</body>
</html>
JS文件 Traverse.js
var countfiles=0;
var countfolders=0;
//用于打开浏览对话框,选择路径
function BrowseFolder(){
try{
var Message = "请选择文件夹"; //选择框提示信息
var Shell = new ActiveXObject( "Shell.Application" );
var Folder = Shell.BrowseForFolder(0,Message,0x0040,0x11);//起始目录为:我的电脑
//var Folder = Shell.BrowseForFolder(0,Message,0); //起始目录为:桌面
if(Folder != null){
Folder = Folder.items(); // 返回 FolderItems 对象
Folder = Folder.item(); // 返回 Folderitem 对象
Folder = Folder.Path; // 返回路径
if(Folder.charAt(Folder.length-1) != "\\"){
Folder = Folder + "\\";
}
//document.all.getfolder.value=Folder;
return Folder;
}
}
catch(e){
alert(e.message+"11");
}
}
//用于遍历
function traverse(localPath,textHtml){
var fso = new ActiveXObject("Scripting.FileSystemObject");
var currentFolder = fso.GetFolder(localPath);
var fileList = new Enumerator(currentFolder.files);
var subFolderList = "";
var fileHtml=textHtml;
var aFile;
for (; !fileList.atEnd(); fileList.moveNext())
{
countfiles++;
aFile=fileList.item();
fileHtml+="文件名:"+aFile.Name.substring(0,aFile.Name.lastIndexOf("."))+"<br/>"
fileHtml+="文件属性:"+aFile.Attributes+"<br/>";
fileHtml+="创建日期:"+aFile.DateCreated+"<br/>";
fileHtml+="最后存取时间:"+aFile.DateLastAccessed+"<br/>";
fileHtml+="最后修改时间:"+aFile.DateLastModified+"<br/>";
fileHtml+="父目录:"+aFile.ParentFolder+"<br/>";
fileHtml+="路径:"+aFile.Path+"<br/>";
fileHtml+="短文件名:"+aFile.ShortName+"<br/>";
fileHtml+="短路径:"+aFile.ShortPath+"<br/>";
fileHtml+="大小:"+aFile.Size+"<br/>";
fileHtml+="类型:"+aFile.Type +"<br/>";
fileHtml+="所在盘:"+aFile.Drive+"<br/><hr>";
}
subFolderList = new Enumerator(currentFolder.SubFolders);
for (; !subFolderList.atEnd(); subFolderList.moveNext())
{
countfolders++;
fileHtml +="<h1>子文件夹:"+ subFolderList.item().Path+"</h1><br/><hr>";
fileHtml=traverse(subFolderList.item().Path,fileHtml)//递归遍历子文件夹
}
//fileHtml+="共遍历文件数:"+countfiles+"<br/>"+"共遍历文件夹数:"+countfolders;
return(fileHtml);
}
8 个解决方案
#1
就是点“选择文件夹”那个按钮时,跳出“没有权限”,本来是想打开一个浏览对话框的。
#2
把文件拓展名改为hta
#3
确实可以,十分感谢chrome_。不过由于我要跟其它的页面集成在一起。所以有没有其它的方法,可以解决这个问题??
#4
如果你自己使用就没有浏览器禁用了activex这种情况。
如果放到网上,那你还是打消念头吧
如果放到网上,那你还是打消念头吧
#5
这个是我们自己要用。显示没有权限跟activex没有关系吧,我专门启用了activex,后便哪个遍历的也要用到activex,那个就没问题。所以我觉得不是activex问题。有其他答案吗??
#6
#7
我在网上查了一下,是Shell.BrowseForFolder的问题
提示没有权限的解决方法(winxp+IE6.0):
1、设置可信任站点(例如本地的可以为:http://localhost)
2、可信任站点安全级别自定义设置中:设置下面的选项
“对没有标记为安全的ActiveX控件进行初始化和脚本运行”----启用
但是在IE8下上边方法不起作用。各位有人知道原因吗?
提示没有权限的解决方法(winxp+IE6.0):
1、设置可信任站点(例如本地的可以为:http://localhost)
2、可信任站点安全级别自定义设置中:设置下面的选项
“对没有标记为安全的ActiveX控件进行初始化和脚本运行”----启用
但是在IE8下上边方法不起作用。各位有人知道原因吗?
#8
我下载了你的代码 在myeclipes6.5自带的浏览器中运行没有问题,在IE中运行,刚开始确实出现了你所说的没有权限那种情况,但是在internet选项中对active控件进行了一些设置以后,现在可以正常运行了.我就把那些ie不推荐的,不安全的项目全部都选择了启用,就好了.你可以试一试.我的电脑是windows7+ie8
另外你的代码对我现在正在做的一个小软件很有帮助,在此表示感谢.
另外你的代码对我现在正在做的一个小软件很有帮助,在此表示感谢.
#1
就是点“选择文件夹”那个按钮时,跳出“没有权限”,本来是想打开一个浏览对话框的。
#2
把文件拓展名改为hta
#3
确实可以,十分感谢chrome_。不过由于我要跟其它的页面集成在一起。所以有没有其它的方法,可以解决这个问题??
#4
如果你自己使用就没有浏览器禁用了activex这种情况。
如果放到网上,那你还是打消念头吧
如果放到网上,那你还是打消念头吧
#5
这个是我们自己要用。显示没有权限跟activex没有关系吧,我专门启用了activex,后便哪个遍历的也要用到activex,那个就没问题。所以我觉得不是activex问题。有其他答案吗??
#6
#7
我在网上查了一下,是Shell.BrowseForFolder的问题
提示没有权限的解决方法(winxp+IE6.0):
1、设置可信任站点(例如本地的可以为:http://localhost)
2、可信任站点安全级别自定义设置中:设置下面的选项
“对没有标记为安全的ActiveX控件进行初始化和脚本运行”----启用
但是在IE8下上边方法不起作用。各位有人知道原因吗?
提示没有权限的解决方法(winxp+IE6.0):
1、设置可信任站点(例如本地的可以为:http://localhost)
2、可信任站点安全级别自定义设置中:设置下面的选项
“对没有标记为安全的ActiveX控件进行初始化和脚本运行”----启用
但是在IE8下上边方法不起作用。各位有人知道原因吗?
#8
我下载了你的代码 在myeclipes6.5自带的浏览器中运行没有问题,在IE中运行,刚开始确实出现了你所说的没有权限那种情况,但是在internet选项中对active控件进行了一些设置以后,现在可以正常运行了.我就把那些ie不推荐的,不安全的项目全部都选择了启用,就好了.你可以试一试.我的电脑是windows7+ie8
另外你的代码对我现在正在做的一个小软件很有帮助,在此表示感谢.
另外你的代码对我现在正在做的一个小软件很有帮助,在此表示感谢.