【问题标题】:file search across partitions in batch files批处理文件中跨分区的文件搜索
【发布时间】:2016-09-04 03:36:20
【问题描述】:

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

【问题讨论】:

  • 编辑您的问题并发布一些您迄今为止尝试过的代码!
  • 在单个驱动器上搜索某个文件,例如。 G。 C:,你可以使用where /R C:\ "filename.ext";要在多个驱动器上执行此操作,您可以使用 for 循环,例如 for %%D in (C: D: E: F:) do @where /R %%D\ "filename.ext"...

标签: file batch-file location partition


【解决方案1】:

你可以试试这样的:

@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%

【讨论】:

    【解决方案2】:

    以下脚本——我们称之为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

    【讨论】:

      猜你喜欢
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 2022-11-28
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 2010-09-19
      相关资源
      最近更新 更多