中易网

请高手写个批量搜索文件的批处理

答案:5  悬赏:30  
解决时间 2021-02-10 06:45
请高手写个批量搜索文件的批处理
最佳答案
1。纯Dos下可以找下载strings。exe,放在此bat同级目录。我的win64无法运行此bat,报兼容错误,但是在另一台MS——DOS下启动可以执行。
2。DOS下无法读取硬件盘符个数,没法设定自动函数跳转盘符,只能每个盘符下放一套此bat和strings。exe,分盘符运行。这个真的很傻。
3。以前在verycd上下到过一个全盘搜索比较程序,忘了什么名字,可以模糊搜索一下(文件比较 搜索),那个东西可以全盘搜索比较并有资源管理器一样的界面供你进行后续处理,可能满足你的要求。

以下代码存盘为BAT就行,写了5个小时,挺有意思的,Dos命令忘光了,一点点捡回来,复习一下20年前的东西真有趣,纯凑热闹哈。

@ECHO OFF
:fipa
ECHO Please enter the full path for search list
SET /p fipa=
if %fipa%=="" echo Search File Path Needed &pause& goto fipa

:part
ECHO Please type in the partition you wanna search
SET /p part=
if %part%=="" echo Search Partition Needed &pause& goto part

:tfol
ECHO Please enter the full patch wanna copy
SET /p targ=
if %targ%=="" echo Full Path Of Target Folder Needed &pause& goto tfol

:step1
REM root and create temp folder tp for serach result *.txt
%part%
cd\
md tp
md %targ%

REM 读取1.TXT行数如果是0就转入 ERROR段
STRINGS LN=LINESIZE %fipa% --1.txt位置自己改
IF %LN%*==0* GOTO ERROR

REM 读取 1.TXT 每一行文件名 并赋值给dir并用N作计数器以循环方式显示 1.TXT各行内容。
SET N=1

:LOP1
STRINGS LC=READ %fipa%,%N%
dir /s /b |find "%LC%" > \tp\%N%.txt
STRINGS N=ADD %N%,1
IF %N%*==%LN%* GOTO cop1
GOTO LOP1

:cop1
copy \tp\*.txt > %part%\jieguo.txt

:copy2
REM read jieguo.txt
STRINGS LN1=LINESIZE %part%\jieguo.txt
SET I=1

:LOP2
REM copy all files to target
STRINGS LC1=READ %fipa%,%I%
copy /Y %LC1% %targ%
STRINGS I=ADD %I%,1
IF %I%*==%LN1%* GOTO stepe
GOTO LOP2

:stepe
%part%
cd\
rd /Q tp

:ERROR
ECHO 1.TXT IS NULL

:END
SET N=
SET I=
SET LN=
SET LN1=
SET LC=
SET LC1=
SET fipa=
SET part=
SET targ=
全部回答
@echo off echo 遍历计算机所有文件,过程稍慢... for /f "delims=" %%i in ('mountvol^|find ":\"') do ( (for /f "delims=" %%j in ('dir/s/b %%i') do echo %%j)>trees.txt ) for /f "delims=" %%k in (1.txt) do ( echo 查找文件: %%k,请等待。。。 (find "%%k" trees.txt)>jieguo.txt ) md d:\目标 2>nul>nul for /f "delims=" %%l in (jieguo.txt) do ( echo 正在复制文件,请等待。。。 copy %%l d:\目标 ) 1. 本脚本先遍历计算机所有文件到 trees.txt 2. 然后在trees.txt中查找 1.txt 中的文件。 3. 若楼主计算机中文件多过,请耐心等待。。。 4. 当然,若需多次查找文件,可保存trees.txt。直接在trees.txt 中查找文件。 5. 即: @echo off for /f "delims=" %%k in (1.txt) do ( echo 查找文件: %%k,请等待。。。 (find "%%k" trees.txt)>jieguo.txt ) md d:\目标 2>nul>nul for /f "delims=" %%l in (jieguo.txt) do ( echo 正在复制文件,请等待。。。 copy %%l d:\目标 )
楼主该学学 AutoIt脚本
如果需要,可以根据你的需要定制软件呀。 现有的软件 文件批量处理百宝箱V8.0 主界面-更多功能-拓展界面-批量复制-13项中有类似的功能。 单击导入文件名数据,将1.txt中的文件名列表导入待查找列表中来,在左上角的资源管理中,将所有盘符都勾选上,同时勾选包含子文件,然后单击将选中文件夹添加入列表中,选择查找匹配模式为等于,命中文件输入方式为覆盖同名文件(这与你的需要有出入,需要定制),选择结果处理方式为复制。然后单击搜索目标文件,搜索完毕后,不能保存搜索结果,需要定制;然后单击复制,但遇到同名文件不会略过,需要定制,复制完毕后,不能保存复制结果,需要定制。
查找文件确实比较慢。显示尽量按照你的要求做的。 @echo off setlocal enabledelayedexpansion set "_a=" for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%a:\.\ set _a=!_a!%%a cd.>jieguo.txt for /f %%a in (1.txt) do ( echo 查找文件:%%a,请等待。。。 for %%b in (%_a%) do ( dir /s /b %%b:\%%a 1>>jieguo.txt 2>nul )) echo.&echo 结果保存在:jieguo.txt echo 正在复制文件,请等待。。。 cd.>copyjieguo.txt for /f "delims=" %%b in (jieguo.txt) do ( if not exist "D:\目标\%%~nb%%~xb" copy "%%b" "D:\目标\" 2>nul && echo %%b>>copyjieguo.txt ) echo.&echo 复制完毕,结果保存在copyjieguo.txt pause>nul goto :eof
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
意凡家居这个地址在什么地方,我要处理点事
脑筋急转弯,五块蛋糕,八个孩子如何分?答案
什么是开启式灯具
仲夏之秋,妻和儿都将要入睡,作者独自一人去
如何看懂 国家建筑标准设计图集
求无限挑战全集 最好是从05年第一期开始的
英雄联盟怎么提高自己的水平?
番禺汽车客运站坐什么车到肇庆学院
空调一级和三级能效那个好
日本留学语言问题
宁记商行地址在什么地方,想过去办事
国家公务员上班迟到十分钟严重吗
三明电业局每月公积金多少钱?
想知道: 杭州市 谷歌卫星地图 在哪
左侧输尿管有结石怎么办?
推荐资讯
小布茗茶这个地址在什么地方,我要处理点事
紫微星理疗养生馆在什么地方啊,我要过去处理
求高人帮忙看看这双鞋耐克是不是真的
保和小区三期地址有知道的么?有点事想过去
willyoubemyvalentine是什么意思
找关于好想你的歌曲有哪些
求鹿晗新专辑百度云资源免费
笔记本电脑,360加速球经常提示cpu占用过高。
提单上必须要有PO号吗
我有好多遥控车无线接收器但是没有发射板怎么
单元音和双元音是什么?
急急急急!!!!烟草专卖管理员是干什么的
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?