永发信息网

写个bat批处理,整个目标文件夹内文件重排序列并遍历复制

答案:2  悬赏:40  手机版
解决时间 2021-03-03 13:26
  • 提问者网友:留有余香
  • 2021-03-03 04:19
文件夹结构
一级文件夹:根下有固定文件夹7个,目标文件夹以春夏秋冬四个分别命名。源文件夹以4、5、6命名。
二级文件夹:所有一级文件夹内包含n个二级文件夹。各内涵图片n张。

第一个bat
所有一二级文件夹以10位数字命名。目标内二级文件夹可能同时存在于源三个文件夹内。要求匹配目标文件夹(春\夏\秋\冬)内的二级文件夹名称,将源文件夹(4\5\6)内名称一致的二级文件夹内所有图片,复制到源文件夹内。按4、5、6的先后顺序,重新命图片序列号。601、602、603...注意合并所有二级文件夹后,源图片命名可能出现一致,导致要求覆盖。实际图片内容是不同的,因此不能被覆盖。例:4二级内有图片401、402;5二级内有图片501、502;6二级内有图片401、601;复制到源二文件夹内后重命名为601(原401)、602(原402)、603(原501)、604(原502)、605(原6下401)、606(原601)。

第二个bat
根下有固定命名的650.jpg。要求遍历复制到指定目标内所有二级文件夹内。
比如指定到春。则春下所有二级文件夹根下复制一张650.jpg。
另附一个删除bat,可以指定目录删除其下指定名字的图片。比如春下所有二级文件夹内的650.jpg。
最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-03-03 04:59
00合成序列详情到指定目录.bat
@echo off & color 0a & title %~n0 By 依梦琴瑶
setlocal enabledelayedexpansion

for %%a in (春 夏 秋 冬) do (
    pushd %%a
        for /d %%b in (*) do (
            set Num=0
            for %%c in (40优化 50腿模 60详情) do (
                if exist "..\%%c\%%b" for /r %%d in ("..\%%c\%%b\*.jpg") do (
                    set /a Num+=1
                    if !Num! lss 10 (set Number=60!Num!) else (set Number=6!num!)
                    echo 正在拷贝“%%c∶%%~nxd”至“%%a∶%%b”目录中。。。
                    copy "%%~d" "%%b\!Number!.jpg" >nul
                )
            )
        )
    popd
)
echo 拷贝完毕,请按任意键退出。
pause>nul
exit

01复制650图片到指定目录.bat
@echo off & color 0a & title %~n0 By 依梦琴瑶
echo 请选择要拷贝的文件:
echo    1、649.jpg      2、650.jpg      3、全部
echo, & set /p Str=输入编号后回车 
set Sfile=649.jpg 650.jpg
if "%Str%"=="1" set Sfile=649.jpg
if "%Str%"=="2" set Sfile=650.jpg
if "%Str%"=="3" set Sfile=649.jpg 650.jpg


echo, & echo, & echo 请选择要处理的目录:
echo    1、春    2、夏    3、秋    4、冬    5、全部
echo, & set /p Sdir=输入编号后回车 
set Sfolder=春 夏 秋 冬
if "%Sdir%"=="1" set Sfolder=春
if "%Sdir%"=="2" set Sfolder=夏
if "%Sdir%"=="3" set Sfolder=秋
if "%Sdir%"=="4" set Sfolder=冬
if "%Sdir%"=="5" set Sfolder=春 夏 秋 冬

echo, & echo, & echo 正在把“%Sfile%”拷贝至“%Sfolder%”目录中的相关目录里。。。
for %%a in (%Sfolder%) do (
    pushd %%a
        for /d %%b in (*) do (
            for %%c in (%Sfile%) do (
                copy ..\%%c "%%b\"
            )
        )
    popd
)
echo, & echo 拷贝完毕,请按任意键退出。
pause>nul
exit

以上代码已根据你新的要求编写。
全部回答
  • 1楼网友:渡鹤影
  • 2021-03-03 05:58
我不会~~~但还是要微笑~~~:)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯