Board logo

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

作者: wangweizhong    时间: 2022-10-13 12:24     标题: 求助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
复制代码
求助,感谢!
作者: Batcher    时间: 2022-10-13 14:35

回复 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. )
复制代码

作者: wangweizhong    时间: 2022-10-13 17:07

可能是我没说明白。  
文件夹 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
作者: Batcher    时间: 2022-10-13 17:41

回复 3# wangweizhong


    Windows系统不允许一个文件夹下出现两个或两个以上重复的文件名
作者: holley    时间: 2022-10-14 18:03

本帖最后由 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%=!")
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2