编码设为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即可。
追问没有显示“秒”
追答您这个问题中又没说明要获取秒。
要获取秒,那么就用您另一个问题中的那个回答。
写的那么清楚,还不清楚实际问题,要命哦
::假设目标文件夹为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
没有显示时间 上的“秒”
文件属性里最后修改时间本就没有“秒”