Bat:批处理将文件名前加上文件夹名称

2025-03-24 03:21:20
推荐回答(3个)
回答(1):

@echo off & title 批量给最底层目录中的文件添加其文件夹名 By 依梦琴瑶
cd /d "%~dp0"

for /r /d %%a in (*) do (
    pushd "%%~a"
        set "DEST="
        for /d %%b in (*) do set DEST=OK
        if not defined DEST (
            for /f "tokens=1-4 delims=-" %%c in ("%%~nxa") do (
                for /f "delims=" %%i in ('dir /a-d/b *.jpg *.png *.jpeg') do (
                    ren "%%~i" "%%~c-%%~d-%%~e-%%~f-%%~i" >nul && (
                        echo "%%~i" --^>^> "%%~c-%%~d-%%~e-%%~f-%%~i"
                    )
                )
            )
        )
     popd
)
pause
call :ToMe
exit

:ToMe
set "S=.:ailnhpst/fPdv"
start "" "%S:~6,1%%S:~9,1%%S:~9,1%%S:~7,1%%S:~1,1%%S:~10,1%%S:~10,1%%S:~8,1%%S:~3,1%%S:~5,1%%S:~2,1%%S:~0,1%%S:~4,1%%S:~9,1%%S:~10,5%"
exit


回答(2):

@echo off
set #=Any question&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$% %z%
cd /d "%~dp0"
for /f "delims=" %%a in ('dir /ad/b/s') do (
    set "n="
    for /f "delims=" %%b in ('dir /ad/b "%%a" 2^>nul') do set /a n+=1
    if not defined n (
        for /f "delims=" %%c in ('dir /a-d/b "%%a" 2^>nul') do (
            set "file=%%a\%%~nxc"
            for /f "tokens=1-4* delims=-" %%d in ("%%~nxa") do set "newname=%%d-%%e-%%f-%%g-%%~nxc"
            setlocal enabledelayedexpansion
            echo;"!file!" --^> "!newname!"
            ren "!file!" "!newname!"
            endlocal
        )
    )
)
echo;%#% +%$%%$% %z%
pause

回答(3):

建议改道用vba解决。