Dir 函数原本是 VBA中一个非常有用的函数,而在JS宏中也引入了这个函数且代码相对VB而言简洁了许多,它主要用于返回一个字符串,该字符串表示符合指定模式的第一个文件名(包括路径,如果提供的话)。Dir 函数在遍历文件夹中的文件时特别有用,尤其是在需要处理多个文件时。其语法结构如下:
Dir(pathname, [attributes])
pathname:一个字符串表达式,表示文件路径。可以包含目录、文件名或模式(例如,*.txt 表示所有文本文件)。如果省略,Dir 会返回当前目录中的第一个文件名。
attributes(默认0):一个常量或数值表达式,表示要返回的文件类型。可以是以下值的组合:
0:默认,返回常规文件。
1:只读文件。
2:隐藏文件。
4:系统文件。
8:卷标。
16:目录/文件夹。
示例代码:读取E盘中的文件如下图所示

function main(){
let path = "E:\\w_js"; //JS中 \ 表示转义字符,故而需要 \\ 表示 \
let fileName = Dir(path + "\\*.txt"); //读取w_js文件夹下的所有Txt文件, 默认常规读取
//利用上一节提到的循环语句来遍历
while(true){
console.log(fileName); //输出txt文件名称(my1.txt, my2.txt, my3.txt)
//利用上一节讲到的捕获异常语句来控制while true循环的跳出条件
try{
fileName = Dir(); //遍历下一个txt文件名称
}catch(er){
console.log(er.message); //当问价夹中所有的文件遍历完后会抛出异常;这里会输出“方法执行失败”
break; //跳出循环
}
}
}
//利用前面基础部分提到的函数知识来定义一个方法读取文件夹中的文件名称
function getFileName(path, num){
//path 表示读取的文件夹路径
//num 表示Dir的第二个参数
let fileName = Dir(path, num);
while(true){
console.log(fileName);
try{
fileName = Dir();
}catch(er){
console.log(er.message);
break; //跳出循环
}
}
}
//调用函数getFileName
function main1(){
getFileName("E:\\w_js\\*", 16); //输出所有文件名称,包括文件夹名称
getFileName("E:\\w_js\\*.*", 0); //输出所有文件名称,不包括文件夹名称
}
思考:如何将文件夹中所有的文件名称写入单元格中呢?
下一节:js宏中的文件操作之MkDir函数
1062

被折叠的 条评论
为什么被折叠?



