如何在驱动器盘符未知且文件夹路径为 random/unknown 时查找文件夹。使用 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?
条件:
我有 3 个不同的文件夹。 Folder1
、Folder2
和 Folder 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
表示它们存在于随机 driver 个字母中,并且还想找到任何随机子文件夹。
我用过:
@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
在找到 driver 字母但未安装 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
该驱动器 = %foldervol%
或其他内容,用于下一个代码或 goto next
所以有人可以帮助我使用我在这里提到的相同脚本吗?
我想从未知的可用卷中找到所有三个文件夹,然后回显在卷名中找到的文件夹并转到下一个?
问题应仅限于一个问题,以下应解决被认为是您的主要问题的问题,即输出您的 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
替换为您的 'folder' 搜索代码,使用 %%H\
作为每个返回的 USB 驱动器的根目录。
条件:
我有 3 个不同的文件夹。 Folder1
、Folder2
和 Folder 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
表示它们存在于随机 driver 个字母中,并且还想找到任何随机子文件夹。
我用过:
@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
在找到 driver 字母但未安装 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
该驱动器 = %foldervol%
或其他内容,用于下一个代码或 goto next
所以有人可以帮助我使用我在这里提到的相同脚本吗?
我想从未知的可用卷中找到所有三个文件夹,然后回显在卷名中找到的文件夹并转到下一个?
问题应仅限于一个问题,以下应解决被认为是您的主要问题的问题,即输出您的 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
替换为您的 'folder' 搜索代码,使用 %%H\
作为每个返回的 USB 驱动器的根目录。