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

批处理找出两个文件夹内文件名相同的文件

[复制链接]
发表于 2008-1-5 21:12:36 | 显示全部楼层 |阅读模式
F盘下现在有两个文件夹:F:\test1、F:\test2
找出它们中文件名相同的文件
发表于 2008-3-27 11:24:53 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%a in ('dir /s/b/a-d "f:\test1"') do (
  3. for /f "delims=" %%b in ('dir /s/b/a-d "f:\test2"') do (
  4. if "%%~nxa"=="%%~nxb" echo "%%~nxa"
  5. ))
  6. echo.&pause
复制代码
发表于 2008-3-29 20:37:36 | 显示全部楼层
  1. @echo off
  2. cd /d f:
  3. echo 相同的文件有:
  4. for /f "delims=" %%i in ('dir /b/a-d "test1" "test2"^|sort') do (
  5. call :judge "%%i"
  6. )
  7. pause
  8. exit
  9. :judge
  10. if "%str1%" == %1 echo %~1
  11. set str1=%~1
复制代码
不足之处:层深仅为一
发表于 2008-11-2 17:47:54 | 显示全部楼层
  1. @dir /a /b f:\test >>s1.txt
  2. @dir /a /b f:\test1 >>s2.txt
  3. @for /f  %%i in (s1.txt) do @(
  4. @for /f  %%j in (s2.txt) do @if "%%~nxi"=="%%~nxj" echo "%%i" 是同名文件
  5. )
  6. del s1.txt
  7. del s2.txt
  8. pause
复制代码
发表于 2008-11-2 17:59:59 | 显示全部楼层

回复 4楼 的帖子

1、临时文件可以不要
2、for这样勘套,设计不合理,会影响效率
发表于 2008-11-3 09:25:10 | 显示全部楼层

回复 5楼 的帖子

版主批评的是啊。

没有想过效率的问题啊,惭愧!

以后改进!

PS:版主签名不错!

[ 本帖最后由 nomyself 于 2008-11-3 09:26 编辑 ]
发表于 2010-7-28 16:21:59 | 显示全部楼层
不知是否可以。感觉效率不怎么样。

请LZ评价一下。

  1. @echo off
  2. for /f "delims=" %%a in ('dir /s/b/a-d "f:\test"') do (
  3. dir /s/b/a-d "f:\test1" | find "%%~nxa" >nul&& echo %%~nxa
  4. )
复制代码

[ 本帖最后由 guihao 于 2010-7-28 16:23 编辑 ]
发表于 2014-2-1 14:59:23 | 显示全部楼层
本帖最后由 keiamy 于 2014-2-1 15:18 编辑

想了很久....

  1. @echo off
  2. for /r F:\test1\ %%i in (*) do (dir /a-d /s /b "F:\test2\%%~nxi" 2>nul)
  3. pause
复制代码
发表于 2014-3-27 15:46:23 | 显示全部楼层
不会啊,看不懂
发表于 2014-6-11 21:51:00 | 显示全部楼层

  1. @echo off
  2. for /r f:\test1 %%i in (*) do (
  3.    set "%%~nxi=a"
  4. )
  5. for /r f:\test2 %%j in (*) do (
  6.    if defined %%~nxj echo %%j
  7. )
  8. pause
复制代码
发表于 2014-6-22 10:52:32 | 显示全部楼层
  1. @echo off
  2. set str=c d e f g a
  3. echo 当前的硬盘的分区有:
  4. for %%i in (%str%) do if exist %%i: echo %%i:
  5. pause
  6. echo 显示F盘下所有的文件夹和文件并分宽列出来
  7. cd..\..
  8. cd /d e:\.&dir /s/a/w
  9. pause
  10. @echo off
  11. for %%i in (e:\test1\*.txt test2\*.txt) do echo %%i
  12. pause
  13. @echo off
  14. for %%i in (e:\test1.\*.txt test2\*.txt) do type %%i
  15. pause
  16. @echo off
  17. for %%i in (e:\test1.\*.txt test2\*.txt) do more %%i
  18. pause
  19. @echo off
  20. for /f "delims=," %%i in (e:\test2\3.txt) do echo %%i
  21. pause
  22. @echo off
  23. for /f %%i in (e:\test1\1.txt) do echo %%i
  24. pause





复制代码
写这段代码用了2个小时,还是感觉不够完整,FOR语句还是不够掌握,SET也没用上,
等想好了再发上来。
发表于 2014-11-8 10:17:02 | 显示全部楼层
本帖最后由 shelluserwlb 于 2014-11-8 12:14 编辑
  1. @echo off
  2. if exist 1.txt del /f 1.txt & if exist 2.txt del /f 2.txt
  3. for %%i in (f:\test1\*.*) do echo %%~nxi>>1.txt
  4. for %%j in (f:\test2\*.*) do echo %%~nxj>>2.txt
  5. findstr /ig:1.txt 2.txt
  6. del 1.txt & del 2.txt
  7. pause>nul
复制代码
发表于 2014-12-19 18:16:37 | 显示全部楼层
回复 3# 梦想种子


    那个sort是个啥?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:45 , Processed in 0.031118 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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