香港腕表价格交流群

一键生成文件夹中所有文件列表到Excel电子表格

2020-11-04 07:43:18

点“考研竞赛数学可每天“涨姿势”哦!

有时候,我们可能需要将某一个文件夹下的所有文件名输出为一个Excel电子表格,或者输入到文档中进行处理,除此之外,可能还需要文件的修改日期、文件大小等信息;更更重要的是,有时候除了当前文件夹下面的所有文件名称之外,还希望一次性将它包含的所有子文件夹下的文件都列出来,并且有时候还仅仅希望列出指定文件类型,比如某些类型图像文件名称列出来,那么该如何实现呢?

 

操作系统:Windows10

实验环境:Mathematica11.2

 

方法一:文件比较少的情形

1、平铺资源管理器窗口和数学软件Mathematica窗口,如图1. 按下键盘上的Windows图标键,不松开按下向左、或向右方向键,可以快速平铺这两个已经打开的窗口。

1 平铺窗口

2、在文件夹名称上按下鼠标左键,拖动文件夹到Mathematica软件窗口松开,会显示处该文件夹,包括子文件中的所有包含后缀名的文件列表,如图2

图2

3、在出现的列表前面输入a=,然后按下【Shift+Enter将文件名称列表赋值给名称为a的变量。

4、再在最下面的空白位置处单击鼠标左键,输入如下Mathematica表达式:

info=FileNameTake[#]&/@a;

Export["文件名称列表.xls",info]

按下【Shift+Enter】执行,得到如下结果,如图3.

3

5、点击下面的打开,打开生成的Excel文件,可以看到所有带有后缀名的文件名称列出在电子表格文件的第一列。

【注】将其中的FileNameTake改成FileBaseName,则生成的文件名列表只有名称,没有扩展名。

 

方法二:文件很多的情形

用方法一,当文件非常多的时候看起来比较乱,而且平铺窗口,拖放文件夹操作也不方便。下面我们将这个操作定义为一个Mathematica的函数,并带两个参数来控制,具体使用方式与注意事项参见说明文字。

 

(*ext用来控制是否显示扩展名,默认值为1,表示显示,0或其他值不显示;full控制是否显示文件的绝对路径与文件名,默认0表示不显示,其他值,如1表示显示*)

FnamesToExcel[ext_:1,full_:0]:=Module[{dir,files,info},

(*打开Windows自带的选择文件夹对话框,选择要列出文件的文件夹*)

dir=SystemDialogInput["Directory"];

(*列出指定文件夹,包括子文件夹中的所有绝对文件名,如果将参数”*.*”改成{“*.jpg","*.png"},则仅仅显示以jpg,png为后缀名的图像文件*)

files=FileNames["*.*",File[dir],Infinity];

(*获取文件名称,修改日期和文件大小*)

info={If[full==0,If[ext==1,FileNameTake[#],FileBaseName[#]],#],FileDate[#],ToString[FileSize[#]]}&/@files;

(*打开另存为对话框保存输入的Excel电子文件,其中默认的文件名称为"文件列表"加上当前日期与时间*)

Return[Export[SystemDialogInput["FileSave",{"文件列表"<>StringJoin[ToString[#]&/@Take[DateList[],5]],{"Excel电子表格文件(*.xlsx,*xls)"->{"*.xlsx,*.xls"}}}],info]]]

 

执行以上表达式后定义函数,然后在最后面的空白位置单击左键输入:

FnamesToExcel[0,0]

执行后生成带有日期、大小和不带扩展名的文件列表Excel文件,效果如图4

4 不带扩展名

执行FnamesToExcel[1,0]带有扩展名,效果如图5

5带有扩展名

执行FnamesToExcel[0,1],文件名为绝对文件名,效果如图6

6 绝对文件名 

这样的方法相对于Windows自带程序直接处理的情形应该来说更实用,更直接。

相关推荐

 长长的专业长图是这样一键炼成的!

微信公众号:考研竞赛数学(ID: xwmath) 大学数学公共基础课程分享交流平台!

↓↓↓阅读原文查看所有文章列表

友情链接

Copyright © 2023 All Rights Reserved 版权所有 香港腕表价格交流群