用BAT导出文件夹内所有文件名和修改时间,格式为EXCEL,不要完整路径怎么弄?

如题所述

编码设为ANSI后保存脚本
@echo off & title 获取文件名,修改时间,并记录到表格中 By 依梦琴瑶
cd /d "%~dp0"

::设置要处理的文件夹
set SrcDir=D:\MyFolder

::设置要处理的文件格式,全部格式请直接用*
set Ext=*

::设置是否包含子目录,是=1,否=其它任何非1的字符
set Sub=0

::保存的表格文件名
set Excel=文件列表表格.xlsx

if "%Sub%"=="1" set "S=/s"
pushd "%SrcDir%"
echo 正在获取中,请耐心等待。。。
(echo "文件名","修改时间"
for /f "delims=" %%a in ('dir /a-d%S%/b/tw %Ext% 2^>nul') do (
    echo "%%~nxa","%%~ta"
))>"%tmp%\MyFilesListTemp.csv"
popd

call :WriteXLSXFile
cls & echo 文件列表表格生成完毕,请在脚本同目录下查看“%Excel%”。
pause
exit

:WriteXLSXFile
(echo Set oExcel = CreateObject("Excel.Application"^)
echo oExcel.Workbooks.Open "%tmp%\MyFilesListTemp.csv"
echo oExcel.ActiveSheet.Columns("A:O"^).Select
echo oExcel.Selection.EntireColumn.AutoFit
echo oExcel.ActiveWorkbook.SaveAs "%~dp0%Excel%",51
echo oExcel.Quit)>"%tmp%\Csv2Xlsx.vbs"
del /f /q "%~dp0%Excel%" 2>nul
"%tmp%\Csv2Xlsx.vbs"
goto :eof

追问

不能用,双击闪一下什么都没有了

追答

您保存时的编码是否设为ANSI了?如果没有,而是用默认的UTF-8编码保存(特别是Win10,及其以上系统),那么会因为编码问题导致脚本无法正常运行。

还有就是复制粘贴后,务必检查代码内容,是否和答案中的一样。因为之前这里有防抄袭干扰码会被加入到复制的内容中。现在不知道还有没有。所以要复查一下内容。

反正贴出这些代码之前,我都是测试正常的。

追问

set SrcDir=D:\MyFolder
目录不对吧,怎么不是当前目录

追答

这个目录需要自定义设置。这样脚本可以不用非放在被处理的目录中执行了。如果非要放被处理的目录中执行,把那个目录路径改成%~dp0即可。

追问

没有显示“秒”

追答

您这个问题中又没说明要获取秒。

要获取秒,那么就用您另一个问题中的那个回答。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-05-01
不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行@echo off&cd /d "%~dp0"
rem 获取当前目录里所有文件的名称和修改时间
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
for %%a in (*) do (if "%%~nxa" neq "%~nx0" (echo;"%%~nxa" %%~ta))
echo;%#% +%$%%$%/%_% %z%
pause
exit

追问

写的那么清楚,还不清楚实际问题,要命哦

第2个回答  2022-05-02

::假设目标文件夹为D:\示例文件,代码:

@echo off

for %%a in (D:\示例文件\*.*) do (echo %%~nxa,%%~ta)>>My新生文件.csv

start excel.exe My新生文件.csv

exit


追问

找不到EXCEL.EXE

追答

你的电脑没有装MSoffice吗?

追问

@echo off
for %%a in (*.*) do (echo %%~nxa,%%~ta)>>My新生文件.csv
exit
没有显示时间 上的“秒”

追答

文件属性里最后修改时间本就没有“秒”

相似回答