bat一键批处理,按文件名整理归类文件夹并复制和删选文件

2025-05-14 07:40:43
推荐回答(2个)
回答(1):

@echo off
setlocal enabledelayedexpansion

for %%a in (*.jpg) do (
    set "FnStr=%%~a"
    if not exist "!FnStr:~,10!\!FnStr:~,13!" md "!FnStr:~,10!\!FnStr:~,13!"

    set "NewFn=!FnStr:~13!"
    set "NewFn=!NewFn:_0=_!
    set "NewFn=!NewFn:_=!
    set "NewFn=!NewFn: =!

    if "!NewFn:~,-4!"=="a" (
        move "%%~a" "!FnStr:~,10!\!FnStr:~,13!\17.jpg"
    ) else (
        if "!NewFn:~,-4!"=="b" (
            move "%%~a" "!FnStr:~,10!\!FnStr:~,13!\4.jpg"
        ) else (
            if "!NewFn:~,-4!"=="4" (
                move "%%~a" "!FnStr:~,10!\!FnStr:~,13!\15.jpg"
            ) else (
                if "!NewFn:~,-4!"=="5" (
                    move "%%~a" "!FnStr:~,10!\!FnStr:~,13!\16.jpg"
                ) else (
                    if "!NewFn:~,-4!"=="1" (
                        copy "%%~a" "!FnStr:~,10!\!FnStr:~,13!\5.jpg"
                        move "%%~a" "!FnStr:~,10!\!FnStr:~,13!\!NewFn!"
                    ) else (
                        if "!NewFn:~,-4!"=="2" (
                            copy "%%~a" "!FnStr:~,10!\!FnStr:~,13!\7.jpg"
                            move "%%~a" "!FnStr:~,10!\!FnStr:~,13!\!NewFn!"
                        ) else (
                            move "%%~a" "!FnStr:~,10!\!FnStr:~,13!\!NewFn!"
                        )   
                    )
                )
            )
        )
    )
)

for /d %%a in (*) do (
    pushd "%%a"
    for /d %%b in (*) do copy "%%b\*.jpg"
    popd
    findstr /c:"%%a" LIST.TXT || (
        xcopy /s/e "%%a" "停用\%%a\"
        rd /s/q "%%a"
    )
)

pause
exit

LIST.TXT文件和BAT文件放在一起,然后把这两个文件放到未分类的JPG中后运行即可。最终的结果就是你给我的举例里面的第二个样式。

回答(2):

@echo off
setlocal enabledelayedexpansion
for /r %%a in (*.txt) do if "%%~xa"==".txt" set "file="%%~a"+!file!"
set NowTime=%time:~,8%
set NowTime=!NowTime::=!
set NowTime=!NowTime: =0!
copy /b !file:~,-1! "!NowTime!_NewFile.txt"
pause

脚本放在当前目录,即可把此目录中包含子目录里的txt文件全部合并。
新的文件命名格式为“时间_NewFile.txt”