記錄4個批量提取文件名的方法

本文適用于對于同一路徑下多個文件的文件名批量提取。
一、Window資源管理器自帶功能
1.全選文件

2.按住shift鍵,并在文件上右鍵點(diǎn)擊

可以看到“復(fù)制文件地址”選項,點(diǎn)擊并粘貼到Excel里面,即可得到批量文件名
也可以點(diǎn)擊右上角“復(fù)制路徑”按鈕,可以得到相同的結(jié)果。

該種方式復(fù)制出來的文件名帶有路徑,在文檔軟件中使用替換功能去除不需要的信息即可。
二、Total Command方法(筆者使用飛揚(yáng)時空版本)
1.打開total commonder,選中需要復(fù)制的文件

2.進(jìn)入菜單欄-選擇-復(fù)制文件名

即可以得到全部文件名
三、批處理(bat)方法
創(chuàng)建一個txt,粘貼下述任意一項的代碼,保存并關(guān)閉。將該txt后綴名“.txt”更改為“.bat”,雙擊運(yùn)行即可。
1.文件名帶后綴名的代碼
DIR *.*? /B >LIST.txt
2.文件名不帶后綴名的代碼
@echo off
cd /d %~dp0
for /f "delims=" %%i in ('dir /b /a-d') do (echo %%~ni>> LIST.txt)
缺點(diǎn):文件名中如果含有特殊字符(如“?”),會無法正常顯示。
四、Excel VBA方法
在目標(biāo)路徑下創(chuàng)建Excel文件,進(jìn)入? 菜單欄-開發(fā)工具-Visual Basic。粘貼下述任一代碼
1.使用Dir函數(shù)的代碼
Sub 提取文件名()
??? '獲取文件名和修改日期
??? Dim path, file, i
??? path = Application.ThisWorkbook.path & "\"
??? '只是文件名 不是文件對象
??? file = Dir(path & "*.*")
??? With ThisWorkbook.Worksheets(1)
???????? .Columns(1).Clear
???? ???.Cells(1, 1) = "文件名"
??????? .Cells(1, 2) = "修改日期"
??????? i = 1
??????? Do While file <> ""
??????????? If file <> ThisWorkbook.Name Then
??????????? .Cells(i, 1) = file
??????????? .Cells(i, 2) = FileDateTime(path & file)
??????????? End If
??????????? i = i + 1? ?
??????????? file = Dir
??????? Loop
??? End With
??? '自動適應(yīng)列寬
??? Columns("A:B").AutoFit? ?
End Sub
缺點(diǎn):文件名中如果含有特殊字符(如“?”),會無法正常顯示。
2.使用Fso方法的代碼
Sub 提取文件名()
??? '獲取文件名和修改日期
??? Dim path As String, fileName As String, i As Integer
??? Dim fso As Object, file As Object
??? Set fso = CreateObject("Scripting.FileSystemObject")
??? path = Application.ThisWorkbook.path
??? Set file = fso.GetFolder(path)
??? With ThisWorkbook.Worksheets(1)
??????? .Columns(1).Clear
??????? .Cells(1, 1) = "文件名"
??????? .Cells(1, 2) = "修改日期"? ? ? ?
??????? i = 2
??????? For Each file In fso.GetFolder(path).files
??????????? If file.Name <> ThisWorkbook.Name Then
????????? ??????.Cells(i, 1) = file.Name
??????????????? .Cells(i, 2) = file.DateLastModified
??????????????? i = i + 1
??????????? End If
?????? ?Next file
??? End With
??? '自動適應(yīng)列寬
??? Columns("A:B").AutoFit
??? Set fso = Nothing
??? Set file = Nothing
End Sub