使用vbs查找文件并打开位置文件夹

使用vbs查找文件并打开位置文件夹

有没有办法用 vbs(或其他)编写一个脚本,在每个硬盘分区中搜索文件,然后如果找到文件,则打开文件的位置文件夹?因此,如果我想在 H:\stuff\texts\ 中的 H: 驱动器中找到文件“rand.txt”,代码会在 C:、D:、E:、F: 中查找,然后如果在 H: 中找到它,它将继续打开文件夹“texts”。我尝试使用 cmd,但它实际上对我来说不起作用……

答案1

这是一个 Windows 批处理解决方案(可能比较耗时):

@ECHO OFF >NUL
@SETLOCAL enableextensions disabledelayedexpansion
for %%G in (a b 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 %%G:\NUL (
       echo %%G: drive
       for /F "tokens=*" %%H in ('where /r %%G:\ rand.txt 2>NUL') do (

         echo %%H
         explorer.exe /e,/select,"%%~fH"

       )
     )
   )
@ENDLOCAL
@GOTO :eof

代替echo %%H您文件名的完整路径......

编辑:(where /r %%G:\ rand.txt 2>NUL重要:)如果起始目录不存在则2>NUL消除错误消息,如下面的示例(碎片枚举):ERROR: The system cannot find the file specifiedINFO: Could not find files for the given pattern(s)

d:\xxx>where /r C:\bat\ randx.txt
ERROR: The system cannot find the file specified.

d:\xxx>echo %errorlevel%
2

d:\xxx>where /r d:\bat\ randx.txt
INFO: Could not find files for the given pattern(s).

d:\xxx>echo %errorlevel%
1

d:\xxx>where /r d:\bat\ rand.txt
d:\bat\files\rand.txt

d:\xxx>echo %errorlevel%
0

d:\xxx>

答案2

这应该在 Powershell 中执行:

gwmi Win32_LogicalDisk | Select-Object -expand DeviceID | %{$drive = $_; $drive; ls "$drive\rand.txt" -recurse | %{ii (Split-Path $_)}}

相关内容