当驱动器号未知且文件夹路径是随机/未知时如何查找文件夹。在批处理文件中使用 wmic logicaldisk 获取标题?

Posted

技术标签:

【中文标题】当驱动器号未知且文件夹路径是随机/未知时如何查找文件夹。在批处理文件中使用 wmic logicaldisk 获取标题?【英文标题】:How to find folder when drive letter is unknown and folder path is random/unknown. using wmic logicaldisk get caption in Batch File? 【发布时间】:2021-11-03 20:18:35 【问题描述】:

条件:

我有 3 个不同的文件夹。 Folder1Folder2Folder 3

它们被放置在一个未知的 USB 驱动器中。

路径也是随机的。

有时是:

G:\Hello\Folder1
G:\Hello\Folder2
G:\hello\Folder3

有时是:

k:\Man\Google\Hey\Folder1
k:\Man\Google\Hey\Folder2
k:\Man\Google\Hey\Folder3

表示它们存在于随机驱动程序字母中,并且还希望在任何随机子文件夹中查找。

我用过:

@echo off
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:\HOPE\EXTRA\Folder1 (
        goto true
    )
)

这里我不想使用(C D E F G H I J K L M N O P Q R S T U V W X Y Z),因为cmd 在找到驱动程序号但未安装voume 时显示错误。

所以我使用了以下脚本

@echo off
CLS&ECHO.&ECHO   Vol Access   Type
echo.
SET "DVF="

FOR /F "tokens=1,*" %%A IN ('wmic logicaldisk get caption^, description ^| FIND ":"') DO (
    VOL %%A >nul 2>&1 && (
        CALL SET "DVF=%%DVF%% %%A"& ECHO   %%A ^| ON.  %%B) || (
            ECHO   %%A ^| OFF. %%B
        )
    )   
ECHO.
ECHO.
ECHO  Available Volumes: %DVF%
echo.
echo.
TIMEOUT /T 5

我想从可用卷中找到Folder1Folder2folder 3,但这里%DVF% 的输出是 C: D: K: G:

所以我想搜索每个可用的卷以找到这 3 个文件夹在 1 个卷中可用,然后 set 那个驱动器 = %foldervol% 或其他东西,用于下一个代码或 goto next

那么任何人都可以帮助我使用我在此处提到的相同脚本吗?

我想从未知的可用卷中找到所有三个文件夹,然后回显在卷名找到的文件夹并转到下一个?

【问题讨论】:

您会注意到我已经对您的问题进行了重大的重新格式化。在这样做的过程中,我缩进了你的代码,除了它清楚地表明你的低级代码缺少右括号,因此不完整。 根据this post on Super User,你应该使用属性DeviceID而不是Caption... 【参考方案1】:

问题应仅限于一个问题,以下问题应解决被视为主要问题的问题,即输出您的 USB 驱动器号。它不会搜索或定位您的目录,因为这是一个完全不同的问题,您没有提供任何代码或其他自我尝试的指示。

@Echo Off
SetLocal EnableExtensions

For /F Tokens^=2^ Delims^=^" %%G In ('%SystemRoot%\System32\wbem\WMIC.exe
 DiskDrive Where "InterfaceType='USB'" Assoc:List
 /AssocClass:Win32_DiskDriveToDiskPartition 2^>NUL ^|
 %SystemRoot%\System32\find.exe "__R"') Do For /F Tokens^=4^ Delims^=^" %%H In (
    '%SystemRoot%\System32\wbem\WMIC.exe Path Win32_LogicalDiskToPartition
     2^>NUL ^| %SystemRoot%\System32\find.exe "%%G"') Do Echo %%H

%SystemRoot%\System32\timeout.exe /T 5 /NoBreak 1>NUL

您显然会用您的“文件夹”搜索代码替换在线 9 上的 Echo %%H,使用 %%H\ 作为每个返回的 USB 驱动器的根目录。

【讨论】:

感谢重新排列代码。也谢谢回复。但我在 Winpe 恢复中使用该代码。我只想在“可用卷”中找到标记为“ON”的文件夹,而根驱动器中没有文件夹路径(我想在整个卷中搜索该文件夹)使用我提到的第二个代码。 您的问题中没有任何内容提到 WinPE 恢复环境,@haseakash,所以除非您认为我们是读心者,否则我不知道您认为我应该如何知道这些信息。也就是说,您提供的代码使用 WMIC 并且在任何环境中都不起作用。此外,如果您期望 WMIC 能够正常工作,那么它也没有理由不在这里。正如我在回答中提到的,您的问题是关于确定未知 USB 驱动器的驱动器号,因为您不想循环遍历每个字母表 C: .. Z:。其他任何问题都是另一个不相关的问题。 真心感谢。上帝保佑你:) @haseakash,如果我的回答解决了您提出的主要问题,请阅读What should I do when someone answers my question?,并根据其内容考虑采取行动。接受一个答案可以帮助其他读者在他们自己的类似问题的过程中自己找到和使用解决方案。

以上是关于当驱动器号未知且文件夹路径是随机/未知时如何查找文件夹。在批处理文件中使用 wmic logicaldisk 获取标题?的主要内容,如果未能解决你的问题,请参考以下文章

Android驱动 怎么装

请问USB BLASTER的驱动问题怎么解决的呢,我的系统是WIN7的,也是无法使用,显示为未知设备,非常感谢!

如何探索windows内核中未知的数据结构

如何使用 Javascript 获取未知文件路径 - 扩展路径?

试图使用Vundle,但是vundle#begin()是一个未知的功能。运行时路径是正确的

如何在模块中加载未知类?