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

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

F盘下现在有两个文件夹:F:\test1、F:\test2
找出它们中文件名相同的文件

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

TOP

  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
复制代码
不足之处:层深仅为一
静水流深...

TOP

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

TOP

回复 4楼 的帖子

1、临时文件可以不要
2、for这样勘套,设计不合理,会影响效率
技术问题请到论坛发帖求助!

TOP

回复 5楼 的帖子

版主批评的是啊。

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

以后改进!

PS:版主签名不错!

[ 本帖最后由 nomyself 于 2008-11-3 09:26 编辑 ]

TOP

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

请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 编辑 ]

TOP

本帖最后由 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
复制代码
我是NO.1 呀﹗不過.......@echo是在菜鳥比賽中....>.<

TOP

不会啊,看不懂

TOP

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

TOP

  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也没用上,
等想好了再发上来。

TOP

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

TOP

回复 3# 梦想种子


    那个sort是个啥?

TOP

返回列表