[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 求助bat脚本把多个文件夹的内容合并,重复名文件不能覆盖

求助bat脚本把多个文件夹的内容合并,重复名文件不能覆盖,如下:
   文件夹 34500383201119_Equip 下有以下文件
    2022101312.log
    2022101311.log
    2022101310.log
    2022101309.log
   文件夹 75028743201049_Equip 下有以下文件
    2022101312.log
    2022101311.log
    2022101310.log
    2022101309.log
  合并后的文件夹保存所有.log文件,不能覆盖。
我找了个脚本可以合并,但是同名文件会覆盖
  1. @echo on
  2. for /f "delims=" %%p in ('dir /b/ad') do move %%p\*.* D:\all\
  3. pause
复制代码
求助,感谢!

回复 1# wangweizhong
  1. @echo off
  2. cd /d "%~dp0"
  3. set "NewFolder=D:\all"
  4. for /f "delims=" %%i in ('dir /b /ad') do (
  5.     for /f "delims=" %%j in ('dir /b /a-d "%%i"') do (
  6.         if not exist "%NewFolder%\%%j" (
  7.             move "%%i\%%j" "%NewFolder%"
  8.         )
  9.     )
  10. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

可能是我没说明白。  
文件夹 34500383201119_Equip 下有以下文件
    2022101312.log
    2022101311.log
    2022101310.log
    2022101309.log
   文件夹 75028743201049_Equip 下有以下文件
    2022101312.log
    2022101311.log
    2022101310.log
    2022101309.log
    2022101308.log
    2022101307.log
  合并后的新文件夹名称到D:\all\,保存所有.log文件,不能覆盖。
需要合并后的结果为
    2022101312.log
    2022101311.log
    2022101310.log
    2022101309.log
    2022101312.log
    2022101311.log
    2022101310.log
    2022101309.log
    2022101308.log
    2022101307.log

TOP

回复 3# wangweizhong


    Windows系统不允许一个文件夹下出现两个或两个以上重复的文件名
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 holley 于 2022-10-14 18:23 编辑

回复 1# wangweizhong
曲线救国?
  1. @echo off
  2. md new
  3. for /r "." %%a in (*.log) do (
  4.     echo %%~na
  5.     type %%a >> %%~na-new.log
  6. )
  7. move "*-new.log" "new"
  8. setlocal enabledelayedexpansion
  9. set "str=-new"
  10. cd /d new
  11. for /f "delims=" %%i in ('dir /b .') do (
  12. set "var=%%i" & ren "%%i" "!var:%str%=!")
复制代码

TOP

返回列表