标题: [文件操作] [已解决]批处理如何查找出指定目录下(含多层子目录)文件名相同的文件? [打印本页]
作者: pdanniel66 时间: 2010-4-24 15:18 标题: [已解决]批处理如何查找出指定目录下(含多层子目录)文件名相同的文件?
本帖最后由 pcl_test 于 2016-11-9 21:26 编辑
请教批处理如何搜寻目录下(含多层子目录)文件名重复之信息
(包含完整路径、文件名、档案产生日期、档案大小等) ?
[ 本帖最后由 pdanniel66 于 2010-4-27 06:30 编辑 ]
作者: pdanniel66 时间: 2010-4-25 06:09 标题: 经过搜索后,并无这类帖子
经过搜索后,并无这类帖子!
作者: sgaizxt001 时间: 2010-4-25 06:28
你的意思是搜索目录(包含子目录)里的文件,如果有文件名重复的就显示他们的完整路劲,文件名,日期,大小?如果没重复的就不显示吗?
作者: sgaizxt001 时间: 2010-4-25 07:17
删除,代码后面。避免引起误会
[ 本帖最后由 sgaizxt001 于 2010-4-25 22:39 编辑 ]
作者: pdanniel66 时间: 2010-4-25 20:05
(1) 谢谢提供方向,但以上batch只可以列出1组同文件名之信息,2个以上同檔名时,则无法列出,因为是要在 File server使用,预计会有上百或上千个同檔名之情况发生。
(2) 不可以限制扩展名 ==> dir /b /a-h /s e:\新建活页夹\*.*
檔名可能是*.ppt,*,doc,*.jpg…. etc
(3) 可否再修正以上 batch , Thanks!
作者: sgaizxt001 时间: 2010-4-25 20:22
好象我浪费论坛资源了,不过真是无心的,斑竹原谅
作者: sgaizxt001 时间: 2010-4-25 21:19
我晕还是有BUG,b.txt多显示了一遍- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-h /s e:\新建文件夹\*.txt') do (
- for /f "delims=" %%i in ("%%~nxi") do (
- if not defined %%i (
- set %%i=A_ ) else (
- set str=%%~nxi
- for /r "e:\新建文件夹\" %%i in (!str!) do (
- if exist %%~fi echo. %%i#%%~fi#%%~ni#%%~ti#%%~zi >>tmp_.txt
- )
- )
- )
- )
- pause
- for /f "tokens=1,2* delims=#" %%i in (tmp_.txt) do (
- if not defined %%j set %%j=A & echo %%i %%j %%k>>结果.txt
- )
- del tmp_.txt
复制代码
你再用这个看看能不能用
[ 本帖最后由 sgaizxt001 于 2010-4-26 07:41 编辑 ]
作者: pdanniel66 时间: 2010-4-25 22:12
(1) 我在第9行增加了%%~nxi ,会产生 temp_.txt,但不会产生 结果.txt , why ?
if exist %%~fi echo. %%~nxi %%~fi %%~ni %%~ti %%~zi >>tmp_.txt
(2) 把echo. %%~fi %%~ni %%~ti %%~zi这里的空格用tab键替换,似乎无法排版
作者: sgaizxt001 时间: 2010-4-25 22:32
1.这里%%~nxi可以直接用%%i代替了,
if exist %%~fi echo. %%~fi %%~ni %%~ti %%~zi %%i>>tmp_.txt
无法产生的是因为我是以路径来作为变量进行最后一个循环的,所以无法产生,你把%%i写在%%~fi后面就可以,一个文件夹下不可能有两个名字相同的文件,但是我前面的代码输出里会有重复显示,所以以完整路径来判断有没有重复的行我认为可行
2.排版的话好象有点问题,如果路径多一个文件夹,后面空格就仍然是那么多个。你看看练习题里就有一个排版的,看看可不可以有点启发
[ 本帖最后由 sgaizxt001 于 2010-4-25 22:37 编辑 ]
作者: pdanniel66 时间: 2010-4-26 06:49
抱歉!我没说清楚,我临时想在前面加文件名(不含路径),该如何改?或者后面檔名加上扩展名
1.txt D:\scripts\TEST\00_\20100425_list_duplicate_files\1.txt 1 2010/04/25 19:51 0
1.doc D:\scripts\TEST\00_\20100425_list_duplicate_files\Test\test2\1.doc 1 2010/04/25 21:52 10752
[ 本帖最后由 pdanniel66 于 2010-4-26 06:54 编辑 ]
作者: sgaizxt001 时间: 2010-4-26 07:42
你再看看7楼的代码可以不。
作者: pdanniel66 时间: 2010-4-26 20:43
看样子不行 , 結果如下:
D:\scripts\TEST\00_\20100425_list_duplicate_files\1.txt D:\scripts\TEST\00_\20100425_list_duplicate_files\1.txt 1#2010/04/25 19:51#0
作者: sgaizxt001 时间: 2010-4-26 20:55
这样的话,问题还是不严重。对临时文件只输入完整路径,然后去掉相同的行,在最后的输出里在输出你想要的东西就可以了- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-h /s e:\新建文件夹\*.txt') do (
- for /f "delims=" %%i in ("%%~nxi") do (
- if not defined %%i (
- set %%i=A_ ) else (
- set str=%%~nxi
- for /r "e:\新建文件夹\" %%i in (!str!) do (
- if exist %%~fi echo. %%~fi>>tmp_.txt
- )
- )
- )
- )
- pause
- for /f "delims=" %%i in (tmp_.txt) do (
- if not defined %%i set %%i=A & echo %%~nxi %%~fi %%~ni %%~ti %%~zi>>结果.txt
- )
- del tmp_.txt
复制代码
作者: pdanniel66 时间: 2010-4-26 20:58
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /a-h /s D:\scripts\TEST\00_\20100425_list_duplicate_files\*.txt *.doc') do (
for /f "delims=" %%i in ("%%~nxi") do (
if not defined %%i (
set %%i=A_ ) else (
set str=%%~nxi
for /r "D:\scripts\TEST\00_\20100425_list_duplicate_files\" %%i in (!str!) do (
if exist %%~fi echo. %%~nxi %%~fi %%~ti %%~zi >>tmp_.txt
)
)
)
)
pause
for /f "tokens=1* delims= " %%i in (tmp_.txt) do (
if not defined %%i set %%i=A & echo %%i %%j >>结果.txt
)
del tmp_.txt
pause
output as below.
1.txt D:\scripts\TEST\00_\20100425_list_duplicate_files\1.txt 2010/04/25 19:51 0
but show error as below.
请按任意键继续 . . .
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
请按任意键继续 . . .
作者: sgaizxt001 时间: 2010-4-26 20:59
我这里没有办法测试,因为我是初学者,写的代码不能一次成功,需要测试修改才能用,而且不具有通用性。你及时给提出问题,我好修改,不过浪费了你的时间真不好意思
作者: GNU 时间: 2010-4-26 20:59 标题: 回复 14楼 的帖子
正确的调试方法应该把@echo off去掉,你提供的一大堆信息基本没啥用。
作者: pdanniel66 时间: 2010-4-26 21:09
您是少尉,我只是三级士官!
作者: sgaizxt001 时间: 2010-4-26 21:13
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-h /s E:\vod\综艺一\*.txt') do (
- for /f "delims=" %%i in ("%%~nxi") do (
- if not defined %%i (
- set %%i=A_ ) else (
- set str=%%~nxi
- for /r "E:\vod\综艺一\" %%i in (!str!) do (
- if exist %%~fi echo.%%~fi %%~ti %%~zi >>tmp_.txt
- )
- )
- )
- )
- pause
- for /f "tokens=1,2,3,4 delims= " %%i in (tmp_.txt) do (
- if not defined %%i set %%i=A & echo. %%~nxi %%i %%j %%k %%l >>结果.txt
- )
- endlocal
- del tmp_.txt
复制代码
这是我运行出来的结果:
NOTES.txt E:\vod\综艺一\2009-2010赛季NBA赛事\NOTES.txt 2009-06-27 04:06 275
NOTES.txt E:\vod\综艺一\2009NBA全明星赛\NOTES.txt 2009-04-10 04:12 559
NOTES.txt E:\vod\综艺一\2009亚洲音乐节\NOTES.txt 2009-11-05 21:01 276
NOTES.txt E:\vod\综艺一\2009集善嘉年华晚会\NOTES.txt 2009-11-05 21:01 276
notes.txt E:\vod\综艺一\S.H.E-SHERO\notes.txt 2010-03-30 13:51 2787
NOTES.txt E:\vod\综艺一\布兰妮_禁区之旅_演唱会\NOTES.txt 2008-10-07 17:47 322
NOTES.txt E:\vod\综艺一\湖南卫视2009-2010跨年演唱会\NOTES.txt 2009-12-18 22:43 265
NOTES.txt E:\vod\综艺一\第12届电影金凤凰奖颁奖典礼晚会\NOTES.txt 2009-09-28 09:16 305
NOTES.txt E:\vod\综艺一\美女厨房II\NOTES.txt 2009-04-29 05:11 806
NOTES.txt E:\vod\综艺一\背后的故事20100314期(刘青云)\NOTES.txt 2010-03-18 05:00 975
notes.txt E:\vod\综艺一\超级偶像20100327\notes.txt 2010-03-30 13:08 403
NOTES.txt E:\vod\综艺一\超级星光大道20100326\NOTES.txt 2009-04-03 11:57 709
NOTES.txt E:\vod\综艺一\迈克尔杰克逊布加勒斯特92演唱会\NOTES.txt 2010-01-14 05:20 2924
NOTES.txt E:\vod\综艺一\迈克尔杰克逊:就是这样\NOTES.txt 2010-01-14 05:22 1145
NOTES.txt E:\vod\综艺一\郭富城2008舞林正传演唱会\NOTES.txt 2009-03-06 01:00 1103
notes.txt E:\vod\综艺一\钟欣桐-人人弹起\notes.txt 2010-03-30 13:52 1435
notes.txt E:\vod\综艺一\陈慧琳-微光\notes.txt 2010-03-30 13:58 1149
NOTES.txt E:\vod\综艺一\鲁豫有约\NOTES.txt 2009-11-05 21:01 276
电影资料(样板).txt E:\vod\综艺一\2009魅力·中国鸟巢夏季音乐会\电影资料(样板).txt 2010-04-23 17:21 1556
电影资料(样板).txt E:\vod\综艺一\2010_Wrestlemania_26\电影资料(样板).txt 2010-04-10 12:30 498
周杰伦 E:\vod\综艺一\周杰伦 龙战骑士\电影资料(样板).txt 2009-03-06 01:01
电影资料(样板).txt E:\vod\综艺一\天天向上20100416期\电影资料(样板).txt 2010-04-05 14:12 649
电影资料(样板).txt E:\vod\综艺一\学友光年07香港站\电影资料(样板).txt 2009-02-19 07:42 2539
电影资料(样板).txt E:\vod\综艺一\小虎队1995年虎啸龙腾狂飙演唱会\电影资料(样板).txt 2010-04-12 11:33 1293
电影资料(样板).txt E:\vod\综艺一\情书第1季12代全集\电影资料(样板).txt 2010-04-14 11:00 1682
电影资料(样板).txt E:\vod\综艺一\我猜20100424\电影资料(样板).txt 2009-12-18 22:43 265
电影资料(样板).txt E:\vod\综艺一\超级游戏奖门人大爆发\电影资料(样板).txt 2010-04-21 14:23 1272
是这样的格式不?
作者: sgaizxt001 时间: 2010-4-26 21:16
还需要排版不?我上面的输出是按照文件夹的排序来顺序输出的,有点乱哦。
sort排序,但是他不分大小写!
[ 本帖最后由 sgaizxt001 于 2010-4-26 21:21 编辑 ]
作者: pdanniel66 时间: 2010-4-26 21:21
非常谢谢,得到我要的结果了!
若可以排序,就太好了!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |