请高手写个批量搜索文件的批处理
发布网友
发布时间:2022-05-25 09:59
我来回答
共5个回答
热心网友
时间:2023-10-07 21:48
如果需要,可以根据你的需要定制软件呀。
现有的软件 文件批量处理百宝箱V8.0 主界面-更多功能-拓展界面-批量复制-13项中有类似的功能。
单击导入文件名数据,将1.txt中的文件名列表导入待查找列表中来,在左上角的资源管理中,将所有盘符都勾选上,同时勾选包含子文件,然后单击将选中文件夹添加入列表中,选择查找匹配模式为等于,命中文件输入方式为覆盖同名文件(这与你的需要有出入,需要定制),选择结果处理方式为复制。然后单击搜索目标文件,搜索完毕后,不能保存搜索结果,需要定制;然后单击复制,但遇到同名文件不会略过,需要定制,复制完毕后,不能保存复制结果,需要定制。
热心网友
时间:2023-10-07 21:49
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=追问很谢谢这位兄弟,不过好像win7和win2003环境下都无法运行STRINGS。网上下载了STRINGS.exe或STRINGS.com都无法使用。
还有其他办法吗?
追答自己试了下,Total commonder这个老家伙可能满足你的要求。
热心网友
时间:2023-10-07 21:49
查找文件确实比较慢。显示尽量按照你的要求做的。
@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
热心网友
时间:2023-10-07 21:50
@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:\目标
)
本脚本先遍历计算机所有文件到 trees.txt
然后在trees.txt中查找 1.txt 中的文件。
若楼主计算机中文件多过,请耐心等待。。。
当然,若需多次查找文件,可保存trees.txt。直接在trees.txt 中查找文件。
即:
@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:\目标
)
热心网友
时间:2023-10-07 21:50
楼主该学学 AutoIt脚本