批处理:提取文件夹中的文件名并保存到Excel表里

发布网友 发布时间:2022-04-23 02:46

我来回答

2个回答

热心网友 时间:2023-06-30 01:09

@echo off & title 生成Excel表格 By 依梦琴瑶
cd /d %~dp0

(for /d %%a in (*) do (
    pushd "%%~a"
        CD.>"%tmp%\CSV.LOG"
        for /f "delims=" %%b in ('dir /a-d/b') do (
            for /f "delims=" %%c in ('dir /a-d/b/o-n "*%%~xb"') do set /a "Fst=1%%~nc-10000"
            set "Str=%%~xb"
            call findstr /bei /c:"\"%%~a\",\"%%Fst%%\",\"%%Str:~1%%\"" "%tmp%\CSV.LOG" >NUL 2>NUL || (
                (call echo "%%~a","%%Fst%%","%%Str:~1%%")>>"%tmp%\CSV.LOG"
            )
        )
    popd
    type "%tmp%\CSV.LOG"
))>"Excel表格记录.xls"
pause

生成的Excel是csv格式的,因此打开后表格间的间隔什么的需要自己手动调整一下,然后另存为正常的xls格式。

热心网友 时间:2023-06-30 01:09

尚有不明之处,请留意私信,加我好友细聊,此处勿回,待我稍后发代码。
1。是否每一个文件保存为一行,如果是这样,那就整个EXCEL就是一列了。
2。如果只生成一个excel文件的话,那就没必要生成excel文件,算成TXT文件也可,因为操作EXCEL必须用VBS,写来甚是麻烦。若是TXT写来就容易些。而且,TXT用EXCEL打开,另存为EXCEL表格即可。追问

我把文件发给你,里面有需要达到的最终效果表。

网页链接

追答@echo off
rem 设置源目录,不可省略最后的\
set "SrcDir=d:\test\"
rem 设置输出文件路径
set "OutFile=d:\test\结果.xls"
(for /d %%a in (*) do (
pushd "%%a"&&for /r %%b in (*) do (
setlocal enabledelayedexpansion
set "name=%%~dpnb"&&set "name=!name:%SrcDir%=!"&&set "name=!name:\=.!"
for /f "tokens=1-3 delims=." %%h in ("!name!") do (
call :get_number "%%i" var
set "name=%%h.!var!.%%j"
echo;!name!
)
endlocal
)
popd
))>"%OutFile%"
pause&exit

:get_number 去掉数字前面的0
setlocal
set num=%~1
:lp
set n=%num:~,1%
if %n%==0 (set "num=%num:~1%"&&goto :lp) else (endlocal&set/a %2=%num%&goto :eof)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com