Board logo

标题: 批处理找出两个文件夹内文件名相同的文件 [打印本页]

作者: youxi01    时间: 2008-1-5 21:12     标题: 批处理找出两个文件夹内文件名相同的文件

F盘下现在有两个文件夹:F:\test1、F:\test2
找出它们中文件名相同的文件
作者: more    时间: 2008-3-27 11:24

  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

  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
复制代码
不足之处:层深仅为一
作者: nomyself    时间: 2008-11-2 17:47

  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     标题: 回复 4楼 的帖子

1、临时文件可以不要
2、for这样勘套,设计不合理,会影响效率
作者: nomyself    时间: 2008-11-3 09:25     标题: 回复 5楼 的帖子

版主批评的是啊。

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

以后改进!

PS:版主签名不错!

[ 本帖最后由 nomyself 于 2008-11-3 09:26 编辑 ]
作者: guihao    时间: 2010-7-28 16:21

不知是否可以。感觉效率不怎么样。

请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 编辑 ]
作者: keiamy    时间: 2014-2-1 14:59

本帖最后由 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
复制代码

作者: zycctv1234    时间: 2014-3-27 15:46

不会啊,看不懂
作者: changedirectory    时间: 2014-6-11 21:51

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

作者: zh_1452    时间: 2014-6-22 10:52

  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也没用上,
等想好了再发上来。
作者: shelluserwlb    时间: 2014-11-8 10:17

本帖最后由 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
复制代码

作者: ann    时间: 2014-12-19 18:16

回复 3# 梦想种子


    那个sort是个啥?




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