找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21446|回复: 9

[文件操作] [已解决]批处理比较两目录的文件,将其中一方的文件删除的问题

[复制链接]
发表于 2023-11-6 20:21:39 | 显示全部楼层 |阅读模式
本帖最后由 thp2008 于 2023-11-6 23:49 编辑

自已写了个比较A和B目录的批处理,弄了半天,死活不成功。大家帮我看看,是什么问题。

规则就是,如果B目录,存在A目录中,相同的文件名,就将B目录中的同名文件删除。
  1. @echo off
  2. setlocal

  3. set /p "A_dir=A目录路径: "
  4. set /p "B_dir=B目录路径: "

  5. echo.
  6. echo 删除清单如下:
  7. echo.

  8. for /r "%A_dir%" %%F in (*) do (
  9.     set "file=%%~nxF"
  10.     if exist "%B_dir%\!file!" (
  11.         echo %B_dir%\!file!
  12.     )
  13. )

  14. echo.
  15. set /p "confirm=请确认是否删除以上文件 (Y/N): "

  16. if /i "%confirm%"=="Y" (
  17.     echo 正在删除文件...

  18.     for /r "%A_dir%" %%F in (*) do (
  19.         set "file=%%~nxF"
  20.         if exist "%B_dir%\!file!" (
  21.             del "%B_dir%\!file!"
  22.         )
  23.     )

  24.     echo.
  25.     echo 删除完成。
  26. ) else (
  27.     echo 操作已取消。
  28. )

  29. endlocal
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-11-6 21:02:44 | 显示全部楼层
  1. @echo off
  2. set "A_dir=A"
  3. set "B_dir=B"
  4. dir /b "%A_dir%" >ta.$
  5. dir /b "%B_dir%">tb.$
  6. for /f "delims=" %%i in ('findstr /ixg:tb.$ ta.$') do (
  7.      if exist t?.$ del t?.$
  8.      del "%B_dir%\ %%i"
  9. )
  10. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
thp2008 + 1 测试通过,感谢!

查看全部评分

发表于 2023-11-6 21:03:22 | 显示全部楼层
回复 1# thp2008


    你的测试目录结构、实际测试结果、报错信息(如果有),都发出来看看吧。
发表于 2023-11-6 21:16:01 | 显示全部楼层
试试将1楼代码13-15行

    if exist "%B_dir%\!file!" (
        echo %B_dir%\!file!
    )

换成

setlocal enabledelayedexpansion
    if exist "!B_dir!\!file!" (
        echo !B_dir!\!file!
    )
endlocal

26-28行的

        if exist "%B_dir%\!file!" (
            del "%B_dir%\!file!"
        )

换成

setlocal enabledelayedexpansion
        if exist "!B_dir!\!file!" (
            del "!B_dir!\!file!"
        )
endlocal

评分

参与人数 1技术 +1 收起 理由
thp2008 + 1 原来是这么会事,弄了我半天。感谢!测试可 ...

查看全部评分

发表于 2023-11-6 21:39:21 | 显示全部楼层
本帖最后由 77七 于 2023-11-6 21:44 编辑
  1. setlocal
  2. endlocal
复制代码

这个是区域变量,没有开启变量延迟扩展
顶楼代码没有判断b是否存在于a吧


  1. @echo off
  2. set a=D:\a\
  3. set b=D:\a\b\
  4. rem 去掉末尾\
  5. for %%a in ("%b%\.") do set b=%%~fa
  6. for /r "%a%" /d %%d in (*) do (
  7.         if /i "%%d" equ "%b%" (
  8.                 for %%a in ("%a%\*") do (
  9.                         if exist "%b%\%%~nxa" (
  10.                                 if not exist "%b%\%%~nxa" (
  11.                                         echo del "%b%\%%~nxa"
  12.                                 )
  13.                         )
  14.                 )
  15.         )
  16. )
  17. pause
复制代码
发表于 2023-11-6 22:03:48 | 显示全部楼层
  1. for /r "%A_dir%" %%F in (*) do (
  2.    for %%a in  ("%%~nxF") do (
  3.         if exist "%B_dir%\%%~nxa" (
  4.            echo "%B_dir%\%%~nxa"
  5.         )
  6.     )
  7. )
复制代码

评分

参与人数 1技术 +1 收起 理由
thp2008 + 1 测试通过,感谢!

查看全部评分

 楼主| 发表于 2023-11-6 23:47:51 | 显示全部楼层
这个是区域变量,没有开启变量延迟扩展
顶楼代码没有判断b是否存在于a吧
77七 发表于 2023-11-6 21:39


这个我测了不行
 楼主| 发表于 2023-11-6 23:51:40 | 显示全部楼层
回复 3# Batcher

弄了半天,也不报错,什么结果也没有,让Ai帮我写的,问了它半天,它也不知道怎么会事。只好上来问一下,发现Ai还是有很多搞不懂的,还是人靠谱。
发表于 2023-11-7 00:54:39 | 显示全部楼层
本帖最后由 77七 于 2023-11-7 00:56 编辑

回复 8# thp2008




提问ai,需要准确描述问题

windows平台,如果A、B两个目录下存在文件名相同的文件,则删除B目录下的该文件,请写出批处理脚本

以下是一个Windows平台下的批处理脚本,用于删除B目录中存在的与A目录相同文件名的文件:


复制代码


  1. @echo off
  2. set "srcDir=A"
  3. set "dstDir=B"

  4. for %%F in ("%srcDir%\*") do (
  5.     if exist "%dstDir%\%%~nxF" (
  6.         del "%dstDir%\%%~nxF"
  7.         echo Deleted file: %%~nxF
  8.     )
  9. )

  10. pause
复制代码


请将脚本保存为.bat文件,并将A和B目录的路径替换为实际的目录。这个脚本会遍历A目录中的文件,在B目录中查找是否存在相同文件名的文件,如果存在则删除B目录中的该文件,并输出删除的文件名。最后的pause命令是为了使脚本执行完成后暂停,以便您查看输出结果。

评分

参与人数 1技术 +1 收起 理由
thp2008 + 1 这个可以

查看全部评分

 楼主| 发表于 2023-11-7 13:24:29 | 显示全部楼层
是的,用Ai写代码,尽量想清楚你的要求,描述清楚你的逻辑,逻辑的描述很重要,这样比较容易成功。3.5 也能用 ,4.0好很多。就是要钱
但是有些细节,它还是不行,而且在我使用近2月来看,写成功了近百个小工具,还是可以的,就是有时候,如果它不会的时候,怎么也理解不成功的时候,就比较麻烦,上次那个拼音替换,跟它反复推拉了8小时,它都没有搞定,才上来问了。有时候,我也想测试一下,它的能力,才花了很长时间,跟它聊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 07:46 , Processed in 0.025177 second(s), 16 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表