-2

健康)状况:

我有 3 个不同的文件夹。Folder1,Folder2Folder 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

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

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

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

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

4

1 回答 1

-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

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

于 2021-09-07T00:20:01.267 回答