bat批处理批量合并多个文件夹的内容到一个文件夹中

求助各位大神,继续一个bat批处理脚本,个人不太懂,感谢!!
描述:
1. 合并前文件夹“未合并”中有若干二级文件夹,每个二级文件夹中有多个文件。
2. 合并后文件夹“合并后”
需求:
1. 对每个二级文件夹中的文件进行重命名,命名规则为:二级文件夹名称_原文件名
2. 复制重命名后的文件到“合并后”文件夹中,如果还存在同名文件就在后面加序号

在很多时候想把多个文件夹中的资料合并到一个文件夹中,因此合并多个文件夹中的照片可以使用批处理方式。
1.在多文件夹的同级目录下新建一个txt文件
2.打开txt文件复制下面内容
@echo off & setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('"dir /ad/b/on *.*"') do (
echo %%i
xcopy %%i D:\all
)
3.保存退出,将txt文件类型改为bat即将.txt改为.bat(保存时注意!要文件类型改成所有文件类型,才能更改成.bat)
4.运行该bat文件,即可完成操作,
在上程序中D:\all为合并后的文件夹可以根据需要修改
希望您能采纳!追问

这个好像没有命名部分吧

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-08-09
@echo off
set #=有问题联系&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$% %z%
set "原文件夹=D:\未合并"
set "新文件夹=D:\合并后"
if not exist "%新文件夹%" md "%新文件夹%"
for /f "delims=" %%a in ('dir /ad/b "%原文件夹%"') do (
    for /f "delims=" %%b in ('dir /a-d/b/s "%原文件夹%\%%~nxa" 2^>nul') do call :loop "%%a" "%%b"
)
echo;%#% +%$%%$% %z%
pause&exit
:loop
set n=0
set "f=%新文件夹%\%~nx1_%~nx2"
:check
if not exist "%f%" (
    echo;"%~2" --^> "%f%"
    copy "%~2" "%f%"
    exit /b
)
set /a n+=1
set "f=%新文件夹%\%~nx1_%~n2(%n%)%~x2"
goto check

本回答被提问者采纳
相似回答