求助!把A文件夹的文件替换到B文件夹对应文件位置

例:A文件夹下的第1-5张图片替换到B文件夹的第1-5张图片,B文件夹里已经建好空白图片等待替换了,注意是文件位置。补充一下问题,另外还有同名的TXT内容需要转移过去,在... 例:A文件夹下的第1-5张图片替换到B文件夹的第1-5张图片,B文件夹里已经建好空白图片等待替换了,注意是文件位置。
补充一下问题,另外还有同名的TXT内容需要转移过去,在A文件夹的Placements子文件夹下
例:
A文件夹的第5,22-25位置的图片替换到B文件夹的第1,32-35位置,同时把A文件夹下Placements子文件夹里第5,22-25位置的TXT内容替换到B文件夹下Placements子文件夹第1,32-35位置的TXT,
TXT内容如图:需要相同格式转移过去
展开
 我来答
依梦琴瑶
高粉答主

2017-10-16 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部
@echo off & title 替换指定位置文件 By 依梦琴瑶
cd /d %~dp0
setlocal enabledelayedexpansion

::设置要处理的文件后缀,所有类型请设为*
set Ext=*.png

::设置要被替换的文件目录,可相对,可绝对。
set ProcDir=B

::设置文件源路径,可相对,可绝对。
set StrDir=A


::设置源目标文件位置,每个位置用英文逗号隔开。
::如果有连续的位置,请用“-”减号符连接起始和结束的位置号
set StrTar=5,22-25

::设置被源目标文件替换的文件位置,每个位置用英文逗号隔开。
::如果有连续的位置,请用“-”减号符连接起始和结束的位置号
set ReTar=1,32-35


::以下代码请勿随意更改,以免出错。
echo 正在预算处理过程,请稍候。。。
del /f /q Batch_Processing_*.bat 2>nul

call :GetCompleteNumber StrTar "%StrTar%" NumA
call :GetCompleteNumber ReTar "%ReTar%" NumB

call :GetFileList "%StrDir%" A
call :GetFileList "%ProcDir%" B

set NumB=!NumB!,
for %%a in (!NumA!) do (
    set "StrTarFile=" & set "StrTarName=" & set "StrTxtFile=" & set "StrTxtName="
    set "ReTarFile=" & set "ReTarName=" & set "ReTxtFile=" & set "ReTxtName="
    for /f "tokens=2* delims=|" %%b in ('findstr "^:%%~a|" "%~dp0Batch_Processing_A0.bat"') do (
        set "StrTarFile=%%~b"
        set "StrTarName=%%~nxb"
    )
    for /f "tokens=2* delims=|" %%b in ('findstr "^:%%~a|" "%~dp0Batch_Processing_A1.bat"') do (
        set "StrTxtFile=%%~b"
        set "StrTxtName=%%~nxb"
    )
    if not "!NumB!"=="," (
        call :GetReTarNum "!NumB!" TarNum
        for /f "tokens=2* delims=|" %%c in ('findstr "^:!TarNum!|" "%~dp0Batch_Processing_B0.bat"') do (
            set "ReTarFile=%%~c"
            set "ReTarName=%%~nxc"
        )
        for /f "tokens=2* delims=|" %%c in ('findstr "^:!TarNum!|" "%~dp0Batch_Processing_B1.bat"') do (
            set "ReTxtFile=%%~c"
            set "ReTxtName=%%~nxc"
        )
        if defined StrTarFile (
            if defined ReTarFile (
                (echo copy /y "!StrTarFile!" "!ReTarFile!" ^>nul 2^>nul ^&^& ^(
                echo     echo "!ReTarName!" 被 "!StrTarName!" 替换
                echo ^) ^|^| ^(
                echo     echo 替换 "!ReTarName!" 失败
                echo ^))>>"%~dp0Batch_Processing_OK1.bat"
            )
        )
        if defined StrTxtFile (
            if defined ReTxtFile (
                (echo copy /y "!StrTxtFile!" "!ReTxtFile!" ^>nul 2^>nul ^&^& ^(
                echo     echo "!ReTxtName!" 被 "!StrTxtName!" 替换
                echo ^) ^|^| ^(
                echo     echo 替换 "!ReTxtName!" 失败
                echo ^))>>"%~dp0Batch_Processing_OK2.bat"
            )
        )
        call set NumB=%%NumB:,!TarNum!,=,%%
    ) else (
        echo 您尚未定义被替换文件位置编号。
        goto End
    )
)

echo 预算处理进程结束,即将开始加载处理进程。
echo 请按任意键继续下一步
echo, & pause>nul
call "%~dp0Batch_Processing_OK1.bat"
call "%~dp0Batch_Processing_OK2.bat"
del /f /q "%~dp0Batch_Processing_*.bat"

:End
echo, & echo 请按任意键退出
pause>nul
exit

:GetReTarNum
for %%a in (%~1) do (
    set "%~2=%%~a"
    goto :eof
)
goto :eof

:GetCompleteNumber
if not defined %1 set %1=NoDel
for %%a in (%~2) do (
    echo "%%~a" | find "-" >nul 2>nul && (
        for /f "tokens=1,2 delims=-" %%b in ("%%~a") do (
            for /l %%d in (%%~b,1,%%~c) do (
                set %3=!%3!,%%~d
            )
        )
    ) || (
        set %3=!%3!,%%~a
    )
)
goto :eof

:GetFileList
pushd "%~1"
    set Num=0
    for %%a in (%Ext%) do (
        if /i not "%%~dpnxa"=="%~0" (
            set /a Num+=1
            (echo :!Num!^|"%%~fa")>>"%~dp0Batch_Processing_%~20.bat"
        )
    )

    pushd Placements
        set Num=0
        for %%a in (*.txt) do (
            set /a Num+=1
            (echo :!Num!^|"%%~fa")>>"%~dp0Batch_Processing_%~21.bat"
        )
    popd
popd
goto :eof



终于写好了,抱歉,耽搁时间了。

来自:求助得到的回答
DoramiHe
2017-10-09 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59542
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
在当前显示的是存放这些图片文件的文件夹状态下,同时按住组合键‘Ctrl键’和‘A键’,进行全选文件。
在选中的文件上方,单击鼠标右键,选择‘重命名’命令。

光标会自动跳到某一个文件的修改文件名状态,编辑这个文件名为‘素材’。

随便点击选中文件区域外的空白处,所有文件即可有规律的修改为‘素材(1)、素材(2)

5.同样,如果是修改不在同一文件夹内的文件,需要先将这些文件调整到同一文件夹内,然后同样的方式操作即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式