在批处理文件中跨分区搜索文件

时间:2016-05-09 13:17:54

标签: file batch-file location partition

我正在尝试创建一个将返回文件位置的批处理文件,包括分区(或驱动器),以便我可以在该批处理文件中使用它来进行更多操作。 文件名已知,但分区和目录未知。这可能吗?

2 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:

@echo off
Title Searching for file by name 
Mode con cols=75 lines=3
cls & color 0A
Set SearchResult=SearchResult.txt
If Exist %SearchResult% Del %SearchResult%
echo(
set /P "FileName=Type the file name for looking for = " 
Setlocal EnableDelayedExpansion
for /f "tokens=2" %%i in ('wmic logicaldisk where "drivetype=3" ^|find /i ":"') do (
    Set MyDrive=%%i
    echo( & cls
    echo(  & echo     Please Wait for moment .... Searching for "%FileName%" on "!MyDrive!\"
    @where /r !MyDrive!\ "%FileName%" >> %SearchResult%
)
Start %SearchResult%

答案 1 :(得分:0)

以下脚本 - 让我们称之为findfile.bat - 在本地磁盘和网络驱动器上搜索名称作为命令行参数(例如,findfile.bat "lostfile.txt")的文件例如:

@echo off
for /F "skip=1" %%I in (
    'wmic LOGICALDISK WHERE ^( ^
        DriveType^=3 OR^
        DriveType^=4^
    ^) GET DeviceID'
) do (
    for /F "delims=" %%J in ("%%I") do (
        2> nul where /R %%J\ "%~1"
    )
)

wmic命令用于检索当前系统上可用的驱动器。在示例中,允许有两个DriveType值:3,表示本地磁盘,4,表示网络驱动器。您可以根据需要调整过滤器 - 引用所有可能值的站点Win32_LogicalDisk class。要不过滤任何驱动器类型,只需删除整个WHERE子句,然后使用剩余的wmic命令行wmic LOGICALDISK GET DeviceID